maX*_*nda 3 java swing garbage-collection concept
据我所知,当我使用System.gc()方法运行垃圾收集时,它将从堆中收集所有未使用和未销毁的对象并清理它.所以当我运行System.gc(); 应该增加JVM的内存.但是当我运行它时,在下面的代码中,结果让我感到困惑.
Runtime rs = Runtime.getRuntime();
System.out.println("Free memory in JVM before Garbage Collection = " +
rs.freeMemory());
rs.gc();
System.out.println("Free memory in JVM after Garbage Collection = " +
rs.freeMemory());
Run Code Online (Sandbox Code Playgroud)
输出是
Free memory in JVM before Garbage Collection = 12184624
Free memory in JVM after Garbage Collection = 12184360
Run Code Online (Sandbox Code Playgroud)
看前值大于后值.
如果我的错误概念或解释我为什么会这样,请纠正我.
谢谢.
在Java中调用垃圾收集仅仅是对JVM的建议.从技术上来说,收集垃圾的方式是100%无法控制的.调用System.gc()礼貌地建议应该删除垃圾,但Java完全有权忽视你,就像一个不听话的孩子.
虽然它会按照你的要求通常做,但它并不总是如此,你肯定不能依赖它.