大对象配置
-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
Map<Integer, byte[]> m = new HashMap<Integer, byte[]>();
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
运行
每次需要1M,大于1024000
所以,会直接进入老年区
老年区,占用了5M内存