首页 >

java如何判断对象是否还“存活”? – 网络|

研究生怎么读两个专业,手机设置布局在哪里,思科模拟器怎么汉化java如何判断对象是否还“存活”? - 网络|java如何判断对象是否还“存活”

在对象中添加引用计数器,每当有地方引用此对象时,计数器+1;当引用失效是-1;当计数器为0是对象就不可能再被引用。

优点:引用计数算法实现简单,判断效率高。注:在java虚拟机里面没有选用引用计数算法来管理内存的,主要是因为它无法解决对象之间的相互循环引用问题。

例如:Objectobj=null;

publicvoidt(){

Testt1=newTest();

Testt2=newTest();

t1.obj=t2;

t2.obj=t1;

}

2、可达性分析算法

基本思路为通过称为“GCRoots”的对象作为起始点,从这些起始点向下搜索,搜索所走过的路径(引用链),当一个对象到GCRoots没有任何引用链相连时,则证明此对象是不可用的。如图:

Java中,可作为GCRoots的对象包括:

①虚拟机栈中引用对象。

②方法区中静态属性引用的对象

③方法区中常量引用的对象

④本地方法栈中JNI引用的对象。

3、对象引用

①强引用:如:Objectobj=newObject();只要强引用还在,垃圾收集器永远不会回收掉被引用的对象。

②软引用:是用来描述一些还有用但并非必须的对象。软引用关联的对象在系统将要发生内存溢出之前,将会把这些对象列进回收范围进行二次回收。如果回收后还没有足够的内存,才会抛出内存溢出异常。

③弱引用:用来描述非必需的对象,它的强度比软引用弱些,被弱引用关联的对象只能存活到下次垃圾收集之前。

④虚引用:也被称为幽灵引用或幻影引用,它是最弱的引用关系。一个对象是否有虚引用存在,完全不会对其生成时间构成影响,也无法通过虚拟引用来获取一个对象实例。


java如何判断对象是否还“存活”? - 网络|
  • 银行工作怎么样?工资怎么样?随着互联网金融的发展,未来去银行工作还能干哪些岗位? - 网络|
  • 银行工作怎么样?工资怎么样?随着互联网金融的发展,未来去银行工作还能干哪些岗位? - 网络| | 银行工作怎么样?工资怎么样?随着互联网金融的发展,未来去银行工作还能干哪些岗位? - 网络| ...

    java如何判断对象是否还“存活”? - 网络|
  • 魔方网表和Excel比它的优势是什么?有没有试用版本,可以试用一下? - 网络|
  • 魔方网表和Excel比它的优势是什么?有没有试用版本,可以试用一下? - 网络| | 魔方网表和Excel比它的优势是什么?有没有试用版本,可以试用一下? - 网络| ...

    java如何判断对象是否还“存活”? - 网络|
  • 在武汉IT行业年薪40万属于什么水平? - 网络|
  • 在武汉IT行业年薪40万属于什么水平? - 网络| | 在武汉IT行业年薪40万属于什么水平? - 网络| ...