内存区域
栈
-Xss
堆
-Xms最小值
-Xmx最大值
-Xmn新生代最小
-XX:newSize新生代最小值
-XX:MaxNewSize新生代最大值
永久代(元空间)
-XX:PermSize -XX:MaxPermsize1.7及之前最小值和最大值
-XX:MetaspaceSize -XX:MaxMetaspaceSize1.8及之后
方法区移动至运行时常量池之外,即元空间
直接内存
- 不是虚拟机运行时数据区的一部分,也不是java虚拟机规范定义的内存区域
-
NIO中会频繁使用这块区域,java堆内可以使用directByteBuffer对象直接引用操作 - 此区域不受java堆大小限制,但也受本机总内存限制,可以通过
MaxDirectMemorySize设置,默认和堆内存最大值一样,所有也会OOM
ByteBuffer b = ByteBuffer.allocateDirect(1024 * 14);
逃逸分析
-server使用server模式运行(只有这个有逃逸分析),还有client模式,mix表示自动判断
-Xmx10M -Xms10m堆大小
-XX+PrintGC打印GC日志
-XX:-EliminateAllocations标量替换
-XX:-UseTLAB事先为每个线程分配一个私有空间ThreadLocalAllocBuffer,可以避免线程new对象时使用同一区域而加锁导致串行