今天上午我们老师讲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.求大神指点.
8.补充:
修饰符的作用范围:
对于protected: