开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 8 天,点击查看活动详情
java-jvm之垃圾回收算法
可回收对象定义
引用计数法
一个对象没有任何与之关联的引用,被引用计数为零。
可达性分析
通过一系列“GC Roots”对象作为起点搜索,如果没有和一个对象之间有可达路径,则该对象是不可达的。不可达对象被标记两次及以上即可被认为是可回收对象。
标记清除算法
在标记阶段,标记所有需要回收的对象;清除阶段则回收被标记的对象所占用的内存。
复制算法
按内存容量将内存划分为等大小的两块。每次只使用其中的一块,当这一块内存满后将尚存活的对象复制到另一块内存中,然后清除掉已使用的内存。
标记整理算法
标记阶段,标记所有可回收的对象;然后将存活对象移向内存的一端,然后清除端边界外的对象。
分代收集算法
根据对象存活的不同生命周期将内存划分为不同的域,一般划分为老年代和新生代。
新生代与复制算法
一般将新生代划分为一块较大的Eden空间和两个较小的Survivor空间(From Space,To Space),每次只使用Eden和其中一块Survivor空间,进行回收对象时,将两个空间存活的对象复制到另一块Survivor空间中。
老年代与标记复制算法
如果To Space无法满足存储某个对象时,则将对象存在老年代中。当进行垃圾回收能够存活下来的对象将被标记年龄+1,当对象的年龄达到15后直接被移到老年代中。
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 8 天,点击查看活动详情