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