(1),堆分配原则
1主要分配在新生代eden
2如开启了本地线程缓冲,按线程优先分配tlab上
3少数情况分老年代
(2),例如
在idea开发工具中editConfigurations选项卡vm Options输入:
-verbose:gc -XX:+PrintGCDetails -XX:+UseSerialGC -Xms40M -Xmx40M -Xmn20M
配置大致解释:开启gc日志打印,使用Serial单线程垃圾回收器,初始内存40M,最大内存40M,最小20M
public class TestCls {
public static void main(String[] args) throws Exception {
byte[] btySize = new byte[10 * 1024 * 1024];
System.out.println("this is out"+ System.currentTimeMillis() );
}
}
输出
-verbose:gc -XX:PrintGCDetails 默认使用回收器ParallelScavenge
Heap
PSYoungGen total 38400K, used 3994K [0x00000000d5d00000, 0x00000000d8780000, 0x0000000100000000)ParallelScavenge收集器,年轻代
eden space 33280K, 12% used [0x00000000d5d00000,0x00000000d60e6968,0x00000000d7d80000) 对象优先在eden分配12%
from space 5120K, 0% used [0x00000000d8280000,0x00000000d8280000,0x00000000d8780000)
to space 5120K, 0% used [0x00000000d7d80000,0x00000000d7d80000,0x00000000d8280000)
ParOldGen total 87552K, used 40960K [0x0000000081600000, 0x0000000086b80000, 0x00000000d5d00000) ParOldGen老年代ParallelScavenge
object space 87552K, 46% used [0x0000000081600000,0x0000000083e00010,0x0000000086b80000)
Metaspace used 2589K, capacity 4494K, committed 4864K, reserved 1056768K
class space used 274K, capacity 386K, committed 512K, reserved 1048576K