对象与垃圾回收1

本文详细介绍了Java中的垃圾回收机制,包括其基本特征、工作原理以及如何通过finalize()方法实现对象的复活。并通过一个具体示例说明了对象从可达状态到可恢复状态,再到不可达状态的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

垃圾回收:即在堆(head)内存中为创建的实例或者对象分配的内存区没有被任何变量引用时 ,这块内存就会变成垃圾,等待垃圾回收机制进行回收。

基本特征有:1.只负责回收堆内存中的对象,不会回收任何物理资源(数据库连接和网络IO资源)

2.程序无法精确控制垃圾回收机制的进行,垃圾回收会在合适的时候进行。回收的垃圾就是无引用的对象内存。

3.垃圾回收机制回收对象之前。都会调用它的finalize()方法,该方法可能使对象复活,(即让一个引用变量重新引用该对象)从而导致垃圾回收机制取消。

如上图,

finalize()方法是在垃圾回收对象之前调用的。可以使对象从可恢复状态(--失去引用的对象或者实例都可以称为到了这个状态)到可达状态(---对象有一个或者多个对应的引用变量,通过引用变量可以调用该对象或实例的方法)。可以称为复活。 

不可达状态:(--finalize方法后依然没有任何引用变量指向的对象或者实例)垃圾回收机制一般回收的实例或者对象都是不可达状态的

 

public class StatusTranfer {
    public static  void test(){
        String a =new String ("轻量级javaEE企业实战");
      //上述代码执行后"轻量级javaEE企业实战"的字符串对象是可达状态的
        a=new String("疯狂java讲义");
     //代码执行到此之后,"疯狂java讲义"的字符串对象是可达状态的,而"轻量级javaEE企业实战"的字符串对象是可恢复状态
    }
    public static void main (String args[]){
        test();
    }
}
//这个例子a是方法中的局部变量引用,有可能对象也会被其他类的类变量引用,此时同理,该类被销毁后,对象才会进入可恢复状态
//也可能被其他对象的实例变量引用,只有该对象被销毁后,才会进入可恢复状态。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值