复制算法如下图所示:
执行效率很高。
可以保证回收后的内存空间没有碎片。
内存空间只能使用1/2
因为90%以上的新生代对象生命周期都很短暂,并且GC在新生代回收的特点就是频率高,耗时低,所以:针对以上特点,JVM垃圾收集器都采用复制算法来回收新生代。
-XX:SurvivorRatio
-XX:PretenureSizeThreshold
-XX:MaxTenuringThreshold 每次Minor GC,年龄加一岁。tenure:任期。
muse@muse:/Users/muse/Desktop> jinfo -flag SurvivorRatio 11303
-XX:SurvivorRatio=8
muse@muse:/Users/muse/Desktop> jinfo -flag PretenureSizeThreshold 11303
-XX:PretenureSizeThreshold=0 // 默认值是0,意思是不管多大都是先在eden中分配内存
muse@muse:/Users/muse/Desktop> jinfo -flag MaxTenuringThreshold 11303
-XX:MaxTenuringThreshold=15