期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,⼀旦发现了只具
有弱引⽤的对象,不管当前内存空间⾜够与否,都会回收它的内存。不过,
由于垃圾回收器是⼀个优先级很低的线程,因此不⼀定会很快发现那些只具
有弱引⽤的对象。
弱引⽤可以和⼀个引⽤队列(ReferenceQueue)联合使⽤,如果弱引⽤所
引⽤的对象被垃圾回收,Java虚拟机就会把这个弱引⽤加⼊到与之关联的引
⽤队列中。
⑷虚引⽤(PhantomReference)
“虚引⽤”顾名思义,就是形同虚设,与其他⼏种引⽤都不同,虚引⽤并不
会决定对象的⽣命周期。如果⼀个对象仅持有虚引⽤,那么它就和没有任何
引⽤⼀样,在任何时候都可能被垃圾回收器回收。
虚引⽤主要⽤来跟踪对象被垃圾回收器回收的活动。虚引⽤与软引⽤和弱
引⽤的⼀个区别在于:虚引⽤必须和引⽤队列 (ReferenceQueue)联合使
⽤。当垃圾回收器准备回收⼀个对象时,如果发现它还有虚引⽤,就会在回
收对象的内存之前,把这个虚引⽤加⼊到与之 关联的引⽤队列中。
由于引⽤和内存回收关系紧密。下⾯,先通过实例对内存回收有个认识;然
后,进⼀步通过引⽤实例加深对引⽤的了解。
2 内存回收
创建公共类MyDate,它的作⽤是覆盖finalize()函数:在finalize()中输出打印
信息,⽅便追踪。
说明:finalize()函数是在JVM回收内存时执⾏的,但JVM并不保证在回收内
存时⼀定会调⽤finalize()。
MyDate代码如下:
package com.skywang.java;
评论0
最新资源