关闭

JVM新生代

别叨叨 1年前 ⋅ 113 阅读

新生代又分为Eden区、From Survivor、To Survivor三个区:

  • Eden区:Java对象的出生地(如果新创建的对象占用内存很大,则直接分配到老年代)。当Eden区内存不够的时候就会触发MinorGC,对新生代区进行一次垃圾回收。
  • From Survivor:上一次GC的幸存者,作为这一次GC的被扫描者。
  • To Survivor:保留一次MinorGC过程中的幸存者。

MinorGC的过程是复制,清空,互换。MinorGC采用复制算法:

  1. eden、From Surviro复制到To Survivor,年龄+1:首先,把Eden和From Survivor区域中存活的对象复制到To Survivor区域(如果对象的年龄达到了老年的标准,则复制到老年代区),同时把这些对象的年龄+1(如果To Survivor空间不够就放到老年区);
  2. 清空eden、From Survivor;
  3. To Survivor和From Survivor互换,原To Survivor成为下一次GC时的From Survivor区。

全部评论: 0

    我有话说: