Advertisement

JVM用于检测Java对象存活状态

阅读量:

1.为什么要判断一个Java对象是否存活

确定Java对象的存活状态对于实现垃圾回收机制以及避免内存泄漏等问题具有关键作用。在Java虚拟机中,垃圾收集器针对堆内存中的对象进行检测,只有确认对象已无法被访问时,才会执行回收操作。判断对象是否处于存活状态的方法主要包括以下两种:

  1. 引用计数算法
  2. 可达性分析方法(即引用链判定法)

2. 引用计数法

2.1 方式描述

  • Java 对象配置一个引用计数器
    • 在存在引用指向该对象时,计数器数值增加1;当引用不再有效时,计数器数值减少1;

2.2 判断对象存活准则

若计数器数值非零,则判定该对象处于存活状态;反之,当计数器数值为零时,则判定其为死亡状态。

2.3 优点

  • 操作简便
    • 判定迅速

2.4 缺点

  • 无法处理对象之间存在的相互循环引用问题

也就是说,该算法在判断逻辑方面存在缺陷

  • 具体说明
复制代码
 <-- 背景 -->

    
 // 对象objA 和 objB 都有字段 name
    
 // 两个对象相互进行引用,除此之外这两个人对象没有任何引用
    
 objA.name = objB;
    
 objB.name = objA;
    
  

全部评论 (0)

还没有任何评论哟~