这取决于程序JIT的编译方式。
从外部,我们无法确定何时运行。
它遵循一些算法,该算法取决于特定的GC。
如果Windows默认为4GB,则Java虚拟机将在具有某些虚拟内存的客户端计算机上运行。它还取决于该特定时间的可用虚拟内存。
您可以尝试使用此小程序来检查GC的行为
public class GCTest {
final int NELEMS = 50000;
void eatMemory() {
int[] intArray = new int[NELEMS];
for (int i=0; i
intArray[i] = i;
}
}
public static void main (String[] args) {
GCTest gct = new GCTest();
// Step 1: get a Runtime object
Runtime r = Runtime.getRuntime();
// Step 2: determine the current amount of free memory
long freeMem = r.freeMemory();
System.out.println("free memory before creating array: " + freeMem);
// Step 3: consume some memory
gct.eatMemory();
// Step 4: determine amount of memory left after consumption
freeMem = r.freeMemory();
System.out.println("free memory after creating array: " + freeMem);
// Step 5: run the garbage collector, then check freeMemory
r.gc();
freeMem = r.freeMemory();
System.out.println("free memory after running gc(): " + freeMem);
}
}
可能的输出-您的情况可能有所不同
free memory before creating array: 4054912
free memory after creating array: 3852496
free memory after running gc(): 4064184
检查此链接http://www.devdaily.com/java/edu/pj/pj010008/