jvm虚拟机对象存活算法和垃圾回收算法
java虚拟机是怎么判断该对象是不是可以被回收了呢?
- 引用计数法
给对象添加一个引用计数器,每当有一个地方引用了这个对象,则计数器加1,当引用失效的时候,计数器减1,当计数器个数为0,则表明这个对象已死,可以被垃圾回收器回收了。
此中方式无法解决对象互相引用的问题,所以java虚拟没有采用这个方式
- 可达性分析算法
根据引用关系,判断对象是否和GCroot之前存在直接或间接的引用关系,来决定这个对象是否可以被回收。
可作为GC Root 的有以下几种:
- 虚拟机栈中本地变量引用的对象
- 方法区中类的静态属性引用的对象
- 方法区中常量引用的对象
- native方法中引用的对象
介绍一下java垃圾收集算法?
-
标记-清除算法
-
复制算法
-
标记-整理算法
-
分代收集算法
未完待续。。。