Java的垃圾回收机制详解
作者:网络转载 发布时间:[ 2012/11/5 13:14:55 ] 推荐标签:
虚引用(Phantom Reference): 虚引用的用途较少,主要用于辅助finalize函数的使用。
虚引用(Phantom Reference)对象指一些执行完了finalize函数,并为不可达对象,但是还没有被GC回收的对象。这种对象可以辅助finalize进行一些后期的回收工作,我们通过覆盖了Refernce的clear()方法,增强资源回收机制的灵活性。
在实际程序设计中一般很少使用弱引用和虚引用,是用软引用的情况较多,因为软引用可以加速JVM对垃圾内存的回收速度,可以维护系统的运行安全,防止内存溢出(OutOfMemory)等问题的产生。
(3)不可视阶段
当一个对象处于不可视阶段,说明我们在其他区域的代码中已经不可以在引用它,其强引用已经消失,例如,本地变量超出了其可视的范围。
try {
Object localObj = new Object();
localObj.doSomething();
} catch (Exception e) {
e.printStackTrace();
}
if (true) {
// 此区域中localObj 对象已经不可视了, 编译器会报错。
localObj.doSomething();
}
(4)不可到达阶段
处于不可达阶段的对象在虚拟机的对象引用根集合中再也找不到直接或间接地强引用,这些对象一般是所有线程栈中的临时变量。所有已经装载的静态变量或者是对本地代码接口的引用。
(5)可收集阶段、终结阶段与释放阶段
当一个对象处于可收集阶段、终结阶段与释放阶段时,该对象有如下三种情况:
<1> 回收器发现该对象已经不可达。
<2> finalize方法已经被执行。
<3> 对象空间已被重用。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11