jvm:堆、栈、新生代、方法区(永久代/元空间)配置命令、直接内存大小配置
堆:
-Xms:堆的最小值也可以称初始值;
-Xmx:堆的最大值;
栈:
-Xss:栈大小;
新生代:
如果同时配置,优先级如下:
高:-XX:NewSize/MaxNewSize
中间 -Xmn (NewSize= MaxNewSize)
低:-XX:NewRatio 表示比例,例如=2,表示 新生代:老年代 = 1:2
方法区(永久代/元空间):
jdk1.7及以前:-XX:PermSize;-XX:MaxPermSize;
jdk1.8以后:-XX:MetaspaceSize; -XX:MaxMetaspaceSize
jdk1.8以后大小就只受本机总内存的限制,MaxMetaspaceSize 只代表 回收阈值最大值
直接内存:
-XX:MaxDirectMemorySize:设置最大堆外内存,不是虚拟机运行时数据区的一部分,也不是java虚拟机规范中定义的内存区域;如果使用了NIO,这块区域会被频繁使用,
如果不设置:默认是0,JVM会自动申请内存的大小,最大大小受限于 -Xmx
如果设置了,最大就是 MaxDirectMemorySize 的大小。
MaxDirectMemorySize 也可以引发 OOM
Exception in thread "main" java.lang.OutOfMemoryError: Direct buffer memory at java.nio.Bits.reserveMemory(Bits.java:694) at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:123) at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:311) at com.dada.app.config.util.MemoryTest.main(MemoryTest.java:14)
共 0 条评论