Java的垃圾回收机制
Java不需要程序员显示进行垃圾回收,JRE会自动回收堆内存中的垃圾。
对于引用对象来说,如果堆内存中的内存没有任何对象引用了,那么这块内存就变成了垃圾,系统会自动清楚该内存区域的内容,并将该内存分配给新的对象
class Person{
int age;
int height;
public void info(String name) {
System.out.println(name+"的年龄是:"+age+",身高是:"+height);
}
//定义一个两参构造器
Person(int age,int height){
this.age=age;
this.height=height;
}
}
public class t {
public static void main(String[] args){
Person p=new Person(24,160); //创建一个实例
Person p2=new Person(25,180); //
p2=null; //切断p2实例指向的堆内存,此时存放(25,180)的堆内存失去了引用,变成垃圾,系统会自动回收该区域
}
}
系统中的运行机制如下图:
1、强制垃圾回收:
(1)调用System类中的gc()静态方法:System.gc();
(2)调用Runtime类中Runtime对象的gc()实例方法:Runtime.getRuntime().gc();
调用这两个方法时,系统默认使用finalize()方法来清理对象的资源