今天我们谈一谈JAVA中的垃圾回收
你好WO SHI 奇卡雨言 ^ _ ^
大家好,暑假终于来了,终于轻松了,我又可以继续更新了,话不多说,我们开始。
在JAVA中,当一个对象成为垃圾后仍会占用空间,时间长了就会垃圾成山,我们的内存也岌岌可危。针对这种情况,JAVA引入了垃圾回收机制。程序员不需要担心垃圾回收问题。JAVA虚拟机会自动回收垃圾所占用的内存空间。
除了等待JAVA虚拟机进行自动垃圾回收外,还可以通过调用 System.gc()
的方法来通知JAVA虚拟机立即进行垃圾回收。当一个对象被释放时,finalize
就会被自动调用,因此,我们可以将finalize
作为镜子来看对象是否还是何时被释放。我们演示一下。
class rabbish{
public void finalize() {
System.out.println("垃圾已被回收。。。。");
}
}
public class rabbishback {
public static void main(String[] args) {
// TODO 自动生成的方法存根
rabbish p1 = new rabbish();
rabbish p2 = new rabbish();
rabbish p3 = new rabbish();
p1 = null;
p2 = null;
p3 = (rabbish)null;
System.gc();
}
}
注意:该方法的返回值必须是**void**
,并且用public
1.在代码中创建了两个对象p1 p2和p3(进行了强制类型转换),然后将两个变量设置为null,这就意味着新创建的三个对象为垃圾
2.接着通过System.gc();
语句通知虚拟机进行垃圾回收。
3.JAVA虚拟机是后台运行,操作会随程序的结束而终止。
4.两种情况会被java虚拟机视为“垃圾”
{对象引用超过其作用范围,这个对象将被视为垃圾
{将对象复制为null
5.System.gc()
方法强制启动垃圾回收器
注意finalize()
方法并不保证一定会发生。如果java 虚拟机内存消耗殆尽,他将不会执行垃圾回收处理