When I compile and run the following very simple Java program using OpenJDK 11 (Zulu distribution on Windows 10):
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());
}
}
it looks like garbage collection is decreasing the amount of free memory:
Free memory before garbage collection: 266881496
Free memory after garbage collection: 7772200
This does not happen when I run it with Oracle's Java 8:
Free memory before garbage collection: 254741016
Free memory after garbage collection: 255795064
Why is that?