JVM分代

102 阅读1分钟

分为年轻代和老年代,默认占用空间比例年轻代和老年代是1:2。年轻代默认分为三个区,一个Eden,两个Survivor区,空间分配为8:1:1。一般的对象会创建在Eden区,当Eden区满了后,会将存活的对象复制到一个Survivor区,可以称为SurvivorA区,然后清空Eden区。而当SurvivorA区满了后,会将存活的对象复制到另一个SurvivorB区,然后清空SurvivorA区。当SurvivorB区满了后,又会将存活的对象复制到survivorB区,然后清空survivorA区,Survivor区总是有一个区为空。一般情况下,当对象经历16次垃圾回收,就会被复制到老年区。如果一个对象特别大,会直接创建在老年代。年轻代一般使用复制整理算法回收对象。

老年代只有一个区域,使用标记清除算法回收对象。

参照: www.zyiz.net/tech/detail… segmentfault.com/a/119000003…