java的内存回收(2)

1垃圾回收机制只负责回收堆内存中除了字符串常量池之外的对象,垃圾回收机制是后台线程,因此执行时间不固定,只有在虚拟机空闲时调度器才有可能调度垃圾回收后台线程,使其占用处理机,因此垃圾回收后台线程的线程执行体不一定什么时候执行

 

2可达状态----可恢复状态(finalize()之后有引用再次指向)-------不可达状态(finalize()之后没有引用再次指向)

 

3强制系统垃圾回收的方式

System.gc();

Runntime.getRuntime().gc();

这两种方法只是通知系统进行了垃圾回收,但系统是否进行垃圾回收依然不确定

 

4在垃圾回收机制真正的回收某一个对象之前,总会先调用该对象的finalize()方法,该方法可能时该对象重新被引用指向,从而不会被回收.

在垃圾回收机制回收某个对象所占用的内存之前,通常要求程序调用适当的方法来清理资源,在没有明确指定清理资源的情况下,java提供了默认机制来清理该对象的资源,这个机制就是finalize方法,这个方法是Object类里的实例方法,我们可以重写finalize方法,使得对象被重新引用/明确的去清理对象占用的资源

protected void finalize() throws Throwable

 

5java.lang.ref包中提供了引用类。代表系统堆对象的3中引用方式:软引用/虚引用/弱引用

强引用:java程序最常见的引用方式

软引用:一个对象被软引用引用时,有可能被垃圾回收机制回收,用于内存敏感的程序中

弱引用:一个对象被弱引用引用时,一定被垃圾回收机制回收,

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值