对象的销毁与垃圾回收机制

Java语言拥有自动垃圾回收机制,负责回收不再被引用的对象所占用的内存。对象超出作用范围或被赋值为null时视为垃圾。垃圾回收器周期性检测无引用对象并释放其内存。finalize()方法在对象回收前可执行特定操作,但其调用并不保证。System.gc()可尝试触发垃圾回收,但实际执行取决于Java虚拟机状态。
摘要由CSDN通过智能技术生成

       每个对象都有生命周期,当对象的生命周期结束时,分配给该对象的内存地址将会被回收,在其他语言中需要手动回收废弃的对象,但是java语言拥有一套完整的垃圾回收机制,用户不必担心废弃的对象占用内存,垃圾回收器将回收物用户的占用内存的资源。


对象被视为垃圾的情况主要包括:


1.对象引用超过其作用范围,则这个对象将被视为垃圾。

2.将对象赋值为null。



       java垃圾回收机制运行原理是:


       java运行环境周期地检测某个实体是否已不再被任何对象所引用,如果发现这样的实体,就释放实体占有的内存。因此,java编程人员不必像C++程序员那样,要时刻自己检查哪些对象应该释放内存。


       没有实体的对象称为空对象。空对象不能使用,即不能让一个空对象去调用方法产生行为。假如程序中使用了空对象,程序在运行时会出现异常:NullPointerException。由于对象是动态地分配实体,所以java的编译器对空对象不做检查。因此,我们应该使用空对象。


       而且垃圾回收器只能回收由new 操作符创建的对象,如果某些对象不是通过new操作符在内存中获取一块内存区域,这种对象可能不被垃圾回收机制所收取。在java语言中提供一个finalize()方法,这个方法是Object类的方法,被声明为protected,用户可以在自己的类中定义这个方法,如果用户在类中定义了finalize()方法,在垃圾回收时应首先调用该方法,并且在下一次垃圾回收动作发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值