JVM的各种参数设置
-xmx[size]
堆的最大值
-xms[size]
堆的最大值
-xss[size]
栈的容量
-XX:PermSize=[size]
JVM初始分配的方法区大小
-XX:MaxPermSize=[size]
JVM最大允许分配的方法区大小,按需分配
-XX:MaxDirectMemorySize=[size]
本机直接内存的大小;Direct ByteBuffer
分配的堆外内存到达指定大小后,即触发Full GC
。该值默认是64M,最大为sun.misc.VM.maxDirectMemory()
-XX:+PrintGCDetails
JVM在GC时打印内存回收日志,并在进程退出时输出当前的内存各区域的分配情况
-XX:PretenureSizeThreshold
来设置多大的对象直接进入老年代(单位字节) 来设置对象多大时可以直接进入年老代
-XX:MaxTenuringThreshold
来设置对象晋升老年代的年龄阙值
-XX:+HeadDumpOnOutOfMemoryError
控制OutOfMemoryError
时打印堆的信息
-XX:+DisableExplicitGC
这个参数作用是禁止代码中显示调用GC
-XX:NewRatio
新生代(eden+2*Survivor)和老年代(不包含永久区)的比值
-XX:SurvivorRatio
设置两个Survivor区和eden区的比值
-XX:+NeverTenure
对象永远不会晋升到老年代
-XX:+AlwaysTenure
表示没有幸存区,所有对象在第一次GC时,会晋升到老年代。
-XX:newSize
-XX:MaxNewSize
就像可以通过参数(-Xms and -Xmx)
指定堆大小一样,可以通过参数指定新生代大小。设置 XX:MaxNewSize
参数时,应该考虑到新生代只是整个堆的一部分,新生代设置的越大,老年代区域就会减少。一般不允许新生代比老年代还大,因为要考虑GC时最坏情况,所有对象都晋升到老年代。-XX:MaxNewSize 最大可以设置为-Xmx/2
.
-XX:+PrintTenuringDistribution
指定JVM 在每次新生代GC时,输出幸存区中对象的年龄分布。