-
引用计数法 高效,但无法解决循环引用的问题。
-
Java中采用“可达性分析”方法 通过一系列的“GC Root”对象作为起点进行搜索
-
如果在GC Root和一个对象之间没有可达路径,就认为这个对象不可达。被判定为不可达对的象不一定会成为可回收对象,需经过至少两次标记过程,如果在这两次标记过程中还是没有逃脱成为可回收对象的可能,就基本上被判定为可回收对象。
-
典型的垃圾回收算法 标记清楚算法,复制算法,标记整理算法,分代收集算法
- 老年代,新生代,堆区之外的永久代
新生代采用复制算法,但并没有按照1:1的比例分成两等份,而是分成三部分,一份较大的Eden和两份较小的Survivor。每次使用Eden空间和其中的一块Survivor空间,当进行回收时,将Eden和Survivor中还存活的对象复制到另一块Survivor空间中,然后清理掉Eden和刚才使用过的Survivor空间。
老年代的特点是每次回收都只回收少量对象,一般使用的是标记整理算法。
永久代(Permanet Generation),它用来存储class类、常量、方法描述等。对永久代的回收主要回收两部分内容:废弃常量和无用的类。
网友评论