关闭

老年代与标记复制算法

别叨叨 1年前 ⋅ 200 阅读

老年代因为每次只回收少量对象,因而采用Mark-Compact算法。

  1. Java虚拟机提到过的处于方法区的永久代(Permanet Generation),它用来存储class类,常量,方法描述等。对永生代的回收主要包括废弃常量和无用的类。
  2. 对象的内存分配主要在新生代的Eden Space和From Survivor,少数情况会直接分配到老年代。
  3. 当新生代的Eden Space和From Survivor空间不足时就会发生一次GC,进行GC后,Eden Space和From Survivor区的存活对象会被复制到To Survivor,然后将Eden Space和From Survivor进行清空。
  4. 如果To Survivor无法足够存储某个对象,则将这个对象存储到老年代。
  5. 在进行GC后,使用的便是Eden Space和To Survivor了,如此反复。
  6. 当对象在Survivor区躲过一次GC后,其年龄就会+1。默认情况下年龄到达15,对象会被移到老年代。

全部评论: 0

    我有话说: