? 今天上午我们老师讲Java的垃圾内存回收机制,然后下午我就写这个简单的几句好多次,不是说代码很长,就那么几句的,就是有些想不懂的。
? 老师讲的垃圾内存回收:
? 1.垃圾内存:
? 就是通过new关键字分配内存并创建了一个对象,比如new?Garbage();就是在产生垃圾
??
? 2.垃圾回收:
? 通过调用finalize()方法,来进行回收.
?
? 3.代码:
class Garbage { int index;//判断销毁的对象编号 static int count; Garbage(){ count = count+1; System.out.println("object:"+count+"constructed."); setID(count); } void setID(int id){ index = id; } protected void finalize(){ System.out.println("object:"+index+"is reclaimed."); } public static void main(String[] args){ new Garbage(); new Garbage(); new Garbage(); new Garbage(); new Garbage(); new Garbage(); System.gc(); } }
?
?4.老师和同学的运行结果:
?
----------------------------------------------------------------?
?
1.看API查看gc(),和finalize()方法:
?gc():
?
?
?finalize():
?
?
2.通过API知道finalize():
? 1.显式的调用finalize方法,会调用finalize();
? 2.所有对象被Garbage Collection时自动调用,比如运行System.gc()的
时候会调用finalize();
?
3.然后我的运行结果如下:
?
?
4.然后就在网上搜:
?
5.最后得出是可能是JDK版本问题,老师的是JDK6,我的是JDK7:
?
6.然后看了好久的G1垃圾收集器,这个没看懂的
?
7.求大神指点.
?
?
?
?
? ? ?
原文:http://cb123456.iteye.com/blog/2215524