垃圾回收 学习笔记(一)

来源:互联网 发布:淘宝店铺有效经营6个月 编辑:程序博客网 时间:2024/04/30 09:04
public class TestGc {public static void main(String[] args){for(int i=0;i<4;i++){new TestGc();}}public void finalize(){System.out.println("系统正在清理TestGc对象的资源……");}}

编译、运行上面的程序,上面的程序看不到任何输出,可见知道系统退出,系统都不曾调用TestGc对象的finalize方法。但如果将程序改成如下形式:
public class TestGc {public static void main(String[] args){for(int i=0;i<4;i++){new TestGc();//下面两行代码的作用完全相同,强制系统进行垃圾回收。//System.gc();Runtime.getRuntime().gc();}}public void finalize(){System.out.println("系统正在清理TestGc对象的资源……");}}


可以看到每次垃圾回收后的提示信息。

程序强制垃圾回收只是建议系统立即进行垃圾回收,系统完全有可能并不立即进行垃圾回收,但垃圾回收机制也不会对程序的建议完全置之不理:垃圾回收机制会在收到通知后,尽快进行垃圾回收。