【JAVA】 jvm 新生代内存不足的对象内存区域转移

package pres.ndz.simple;




public class App {


    private static final int  _1MB = 1024*1024;


    /**
     * -verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8
     *
     * -Xmn10M 规定新生代大小为10M
     * -XX:SurvivorRatio=8 新生代和存活区存活比例8:1
     */
    public static void main(String[] args) {
        byte[] allocation1, allocation2, allocation3, allocation4;

        allocation1 = new byte[2 * _1MB];
        allocation2 = new byte[2 * _1MB];
        allocation3 = new byte[2 * _1MB];
        allocation4 = new byte[4 * _1MB];


        // allocation4 jvm 会发现新生代内存不足 此时会进行jc (Minor GC 指新生代GC)
        // 发生 jc时又发现3个2MB  的对象无法全部放到 存活区(存活区1M)
        // 从而会将allocation1, allocation2, allocation3担保到老年代

        // 结论: 当新生代内存不足 对象的内存位置转移顺序 新生代->存活区->老年代

    }


}

posted @ 2019-06-06 07:05  加州风尘  阅读(677)  评论(0编辑  收藏  举报