触发垃圾回收
使用 System.gc()
可以用来建议 JVM 进行垃圾回收,但不保证回收时间以及是否会回收。JVM 会判断是否有回收的必要性。
在 Oracle Java 8 默认配置下,下面的代码,在一些场景下,能有效触发 gc:
不保证一定触发。
finalize 方法
如果一个类实现了 finalize 方法,那么当类生成的对象要被垃圾回收时,会先执行该方法。
示例:
运行结果:
为了触发 gc行为,用了下面的代码:
这个代码不保证一定会触发 gc 操作,但在这个示例中是有用的。
如果去掉这两行,Person 的 finalize 不会被触发。可能是因为进行结束可以直接清理内存,所以就不 gc 了。