当我使用 OpenJDK 11(Windows 10 上的 Zulu 发行版)编译并运行以下非常简单的 Java 程序时:
public class GCTest {
public static void main(String[] args) {
System.out.println("Free memory before garbage collection: " + Runtime.getRuntime().freeMemory());
Runtime.getRuntime().gc();
System.out.println("Free memory after garbage collection: " + Runtime.getRuntime().freeMemory());
}
}
看起来垃圾收集正在减少可用内存量:
Free memory before garbage collection: 266881496
Free memory after garbage collection: 7772200
当我使用 Oracle 的 Java 8 运行它时,不会发生这种情况:
Free memory before garbage collection: 254741016
Free memory after garbage collection: 255795064
这是为什么?