Java垃圾回收时对对象的标记分析

来源:互联网 发布:js隐藏元素 hidden 编辑:程序博客网 时间:2024/06/11 19:39
引用计数法(Java未使用)
给对象添加一个引用计数器,对象被引用加一,引用失效时计数器减一
可达性分析法(Java虚拟中使用的方法)
枚举出根节点,根据根节点向下分析,与根节点有引用关系的视为存活对象,与根节点没有关系则可以回收

java引用类型
强引用-----指程序代码中普遍存在的,类似Object obj = new Object(),只要强引用存在则对象永远不会被回收
软引用-----描述一些有用但还非必须的对象,在系统发生内存溢出前会把这些对象列入回收范围内,SoftReference
弱引用-----描述非必须对象,只能存活到下一次垃圾回收之前,WeakReference
虚引用-----最弱的引用关系,是否存有虚引用关系完全不会对对其生存周期造成影响,PhantomReference

对象的自我拯救
对象调用finallize()方法可以躲过一次GC,在该方法内将this指针指向GC节点,可以在当次GC中避免被标记,但是在下次系统GC时依旧会被标记回收。

GC Root对象包括
  1. 虚拟机栈中引用的对象(栈帧中的本地变量列表)
  2. 方法区中静态属性引用的对象
  3. 方法区中常量引用的对象
  4. 本地方法栈中JNI引用的对象
0 0
原创粉丝点击