JVM中GC大对象配置

大对象配置

-XX:PretenureSizeThreshold
配置直接进入老年代的对象大小
如果,对象不是太大TLAN区,优先分配空间

大对象
新生代eden区,无法装入时,会直接进入老年代
可以配置对象大小,直接进入老年代

package com.bjsxt.base001;

import java.util.HashMap;
import java.util.Map;

public class Test06 {

    public static void main(String[] args) {
        // 1024=1024*1000
        // 参数:-Xmx30M -Xms30M -XX:+UseSerialGC -XX:+PrintGCDetails
        // -XX:PretenureSizeThreshold=1024000
        Mapbyte[]> m = new HashMapbyte[]>();
        for (int i = 0; i < 5; i++) {
            byte[] b = new byte[1024 * 1024];
            m.put(i, b);
        }
    }
}

程序分析
每次需要1M,总共需要5M内存

测试

参数配置

-Xmx30M -Xms30M -XX:+UseSerialGC -XX:+PrintGCDetails -XX:PretenureSizeThreshold=1024000

设置对象大小为,1024000
1024000=1024*1000<1024*1024
运行
JVM中GC大对象配置_第1张图片
每次需要1M,大于1024000
所以,会直接进入老年区
老年区,占用了5M内存

你可能感兴趣的:(————JVM)