a. 对于布尔型的选项:-XX:+<option> 启用;-XX:-<option> 禁用
b. 对于数值型的选项:-XX:<option>=<number>。
单位: k/K - kilobytes
m/M - megabytes
g/G - gigabytes
c. 对于字符型的选项:-XX:<option>=<string>
d. jvm对大小写敏感。
[color=violet]1. 行为型参数[/color]
-XX:+DisableExplicitGC
禁用显式的System.GC()调用。
-XX:+RelaxAccessControlCheck
在核查器中放宽入侵控制检查
-XX:+ScavengeBeforeFullGC
新生代GC优先于Full GC执行
-XX:+UseConcMarkSweepGC
为年老代/永久代使用并发标记-清除收集器
-XX:+UseSerialGC
使用串行垃圾收集
-XX:+UseParallelGC
使用并行垃圾收集,此配置仅对年轻代有效。不能和-XX:+UseSerialGC同时使用
-XX:+UseParallelOldGC
对所有代使用并行垃圾收集器,启用该项将自动启用-XX:+UseParallelGC
-Xint
只使用解释执行模式
-client
client模式,默认模式。使用C1优化,一般用于桌面应用程序。
-server
使用C2优化,多用于服务器应用程序。
-Xnoclassgc
禁止类的垃圾回收。
-Xincgc
启用增量垃圾回收
-Xbootclasspath:
设置引导类加载器需要加载的目录、zip/jar等,使用分号隔开。
-Xbootclasspath/a:
设置引导类加载器最后需要加载的目录、zip/jar等,使用分号隔开。如-Xbootclasspath/a:D:/mvn/org/apache/ant/ant/1.5.3/ant-1.5.3.jar;E:/ant-1.6.0.jar
-Xbootclasspath/p:
设置引导类加载器最先需要加载的目录、zip/jar等,使用分号隔开
[color=violet]2. 垃圾回收参数[/color]
-XX:MaxGCPauseMillis
设置每次垃圾回收的最长时间。这是一个软目标,jvm将尽可能满足该参数。
-XX:NewRatio=n
年老代/年轻代的比率,默认值为2。因为堆内存=年轻代+年老代。此时年轻代占堆内存的1/3。
-XX:SurvivorRatio=n
Eden区和其中一个Survivor区的比率。默认值为8。因为年轻代=1个Eden+2个Survivor,所以此时每个Survivor区占年轻代的1/10。
-XX:MaxTenuringThreshold=n
如果一个对象在Survivor区移动n次还没有被回收,就放入年老代。默认值为15。
-XX:ParallelGCThreads=n
配置并行收集器的线程数。即多少个线程同时进行垃圾回收。最好配置此值与处理器数目相等。
[color=violet]3. 性能调优参数[/color]
-Xms256M
设置初始堆内存为256M
-Xmx512M
设置最大堆内存为512M
-Xmn96M
设置年轻代大小为96M
-Xss1M
设置线程栈大小为1M
-XX:PermSize=128M
设置永久代的内存为128M
-XX:MaxPermSize=256M
设置永久代的最大内存为256M。默认永久代的最大内存为64M。
-XX:NewSize=20M
年轻代的默认大小为20M。
-XX:MaxNewSize=100M
年轻代的最大内存为100M。
-XX:CompileThreshold=10000
方法被调用次数达到该阀值时,就编译为机器码。server模式默认10000,client模式默认1500。
-XX:MaxHeapFreeRatio=70
垃圾回收后,空闲堆所占的最大比例。大于该值后,堆就会被收缩。
-XX:MinHeapFreeRatio=40
垃圾回收后,空闲堆所占的最小比例。小于该值后,堆就会被扩展。
[color=violet]4. 调试跟踪参数[/color]
-XX:+PrintGC
打印垃圾回收信息。
-XX:+PrintGCDetails
打印垃圾回收详细信息。
-XX:+PrintHeapAtGC
打印GC前后的详细堆栈信息。
示例:
{Heap before GC invocations=19 (full 1):
def new generation total 78720K, used 74234K [0x03ae0000, 0x09040000, 0x0e580000)
eden space 70016K, 100% used [0x03ae0000, 0x07f40000, 0x07f40000)
from space 8704K, 48% used [0x07f40000, 0x0835e8a8, 0x087c0000)
to space 8704K, 0% used [0x087c0000, 0x087c0000, 0x09040000)
tenured generation total 174784K, used 66479K [0x0e580000, 0x19030000, 0x23ae0000)
the space 174784K, 38% used [0x0e580000, 0x1266bc50, 0x1266be00, 0x19030000)
compacting perm gen total 196608K, used 42690K [0x23ae0000, 0x2fae0000, 0x2fae0000)
the space 196608K, 21% used [0x23ae0000, 0x26490a08, 0x26490c00, 0x2fae0000)
No shared spaces configured.
26.497: [GC 26.497: [DefNew: 74234K->6916K(78720K), 0.0231646 secs] 140713K->73395K(253504K), 0.0232168 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]
Heap after GC invocations=20 (full 1):
def new generation total 78720K, used 6916K [0x03ae0000, 0x09040000, 0x0e580000)
eden space 70016K, 0% used [0x03ae0000, 0x03ae0000, 0x07f40000)
from space 8704K, 79% used [0x087c0000, 0x08e81170, 0x09040000)
to space 8704K, 0% used [0x07f40000, 0x07f40000, 0x087c0000)
tenured generation total 174784K, used 66479K [0x0e580000, 0x19030000, 0x23ae0000)
the space 174784K, 38% used [0x0e580000, 0x1266bc50, 0x1266be00, 0x19030000)
compacting perm gen total 196608K, used 42690K [0x23ae0000, 0x2fae0000, 0x2fae0000)
the space 196608K, 21% used [0x23ae0000, 0x26490a08, 0x26490c00, 0x2fae0000)
No shared spaces configured.
}
-XX:+PrintGCTimeStamps
打印垃圾回收的时间戳。
-XX:+PrintTenuringDistribution
打印对象再永久代的生存期信息。
-XX:InlineSmallCode=25
当编译好的方法的本地码小于此值时,内联此方法。
-XX:MaxInlineSize=35
能被内联的方法的最大字节码大小。
-XX:FreqInlineSize=35
能被内联的频繁调用的方法的最大字节码大小。
-Xloggc:<file>
输出带时间戳的垃圾回收状态信息到指定的文件。使用此项会导致Console上不显示垃圾回收信息。
-XX:+HeapDumpOnOutOfMemoryError
堆内存溢出时dump文件,以供分析
b. 对于数值型的选项:-XX:<option>=<number>。
单位: k/K - kilobytes
m/M - megabytes
g/G - gigabytes
c. 对于字符型的选项:-XX:<option>=<string>
d. jvm对大小写敏感。
[color=violet]1. 行为型参数[/color]
-XX:+DisableExplicitGC
禁用显式的System.GC()调用。
-XX:+RelaxAccessControlCheck
在核查器中放宽入侵控制检查
-XX:+ScavengeBeforeFullGC
新生代GC优先于Full GC执行
-XX:+UseConcMarkSweepGC
为年老代/永久代使用并发标记-清除收集器
-XX:+UseSerialGC
使用串行垃圾收集
-XX:+UseParallelGC
使用并行垃圾收集,此配置仅对年轻代有效。不能和-XX:+UseSerialGC同时使用
-XX:+UseParallelOldGC
对所有代使用并行垃圾收集器,启用该项将自动启用-XX:+UseParallelGC
-Xint
只使用解释执行模式
-client
client模式,默认模式。使用C1优化,一般用于桌面应用程序。
-server
使用C2优化,多用于服务器应用程序。
-Xnoclassgc
禁止类的垃圾回收。
-Xincgc
启用增量垃圾回收
-Xbootclasspath:
设置引导类加载器需要加载的目录、zip/jar等,使用分号隔开。
-Xbootclasspath/a:
设置引导类加载器最后需要加载的目录、zip/jar等,使用分号隔开。如-Xbootclasspath/a:D:/mvn/org/apache/ant/ant/1.5.3/ant-1.5.3.jar;E:/ant-1.6.0.jar
-Xbootclasspath/p:
设置引导类加载器最先需要加载的目录、zip/jar等,使用分号隔开
[color=violet]2. 垃圾回收参数[/color]
-XX:MaxGCPauseMillis
设置每次垃圾回收的最长时间。这是一个软目标,jvm将尽可能满足该参数。
-XX:NewRatio=n
年老代/年轻代的比率,默认值为2。因为堆内存=年轻代+年老代。此时年轻代占堆内存的1/3。
-XX:SurvivorRatio=n
Eden区和其中一个Survivor区的比率。默认值为8。因为年轻代=1个Eden+2个Survivor,所以此时每个Survivor区占年轻代的1/10。
-XX:MaxTenuringThreshold=n
如果一个对象在Survivor区移动n次还没有被回收,就放入年老代。默认值为15。
-XX:ParallelGCThreads=n
配置并行收集器的线程数。即多少个线程同时进行垃圾回收。最好配置此值与处理器数目相等。
[color=violet]3. 性能调优参数[/color]
-Xms256M
设置初始堆内存为256M
-Xmx512M
设置最大堆内存为512M
-Xmn96M
设置年轻代大小为96M
-Xss1M
设置线程栈大小为1M
-XX:PermSize=128M
设置永久代的内存为128M
-XX:MaxPermSize=256M
设置永久代的最大内存为256M。默认永久代的最大内存为64M。
-XX:NewSize=20M
年轻代的默认大小为20M。
-XX:MaxNewSize=100M
年轻代的最大内存为100M。
-XX:CompileThreshold=10000
方法被调用次数达到该阀值时,就编译为机器码。server模式默认10000,client模式默认1500。
-XX:MaxHeapFreeRatio=70
垃圾回收后,空闲堆所占的最大比例。大于该值后,堆就会被收缩。
-XX:MinHeapFreeRatio=40
垃圾回收后,空闲堆所占的最小比例。小于该值后,堆就会被扩展。
[color=violet]4. 调试跟踪参数[/color]
-XX:+PrintGC
打印垃圾回收信息。
-XX:+PrintGCDetails
打印垃圾回收详细信息。
-XX:+PrintHeapAtGC
打印GC前后的详细堆栈信息。
示例:
{Heap before GC invocations=19 (full 1):
def new generation total 78720K, used 74234K [0x03ae0000, 0x09040000, 0x0e580000)
eden space 70016K, 100% used [0x03ae0000, 0x07f40000, 0x07f40000)
from space 8704K, 48% used [0x07f40000, 0x0835e8a8, 0x087c0000)
to space 8704K, 0% used [0x087c0000, 0x087c0000, 0x09040000)
tenured generation total 174784K, used 66479K [0x0e580000, 0x19030000, 0x23ae0000)
the space 174784K, 38% used [0x0e580000, 0x1266bc50, 0x1266be00, 0x19030000)
compacting perm gen total 196608K, used 42690K [0x23ae0000, 0x2fae0000, 0x2fae0000)
the space 196608K, 21% used [0x23ae0000, 0x26490a08, 0x26490c00, 0x2fae0000)
No shared spaces configured.
26.497: [GC 26.497: [DefNew: 74234K->6916K(78720K), 0.0231646 secs] 140713K->73395K(253504K), 0.0232168 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]
Heap after GC invocations=20 (full 1):
def new generation total 78720K, used 6916K [0x03ae0000, 0x09040000, 0x0e580000)
eden space 70016K, 0% used [0x03ae0000, 0x03ae0000, 0x07f40000)
from space 8704K, 79% used [0x087c0000, 0x08e81170, 0x09040000)
to space 8704K, 0% used [0x07f40000, 0x07f40000, 0x087c0000)
tenured generation total 174784K, used 66479K [0x0e580000, 0x19030000, 0x23ae0000)
the space 174784K, 38% used [0x0e580000, 0x1266bc50, 0x1266be00, 0x19030000)
compacting perm gen total 196608K, used 42690K [0x23ae0000, 0x2fae0000, 0x2fae0000)
the space 196608K, 21% used [0x23ae0000, 0x26490a08, 0x26490c00, 0x2fae0000)
No shared spaces configured.
}
-XX:+PrintGCTimeStamps
打印垃圾回收的时间戳。
-XX:+PrintTenuringDistribution
打印对象再永久代的生存期信息。
-XX:InlineSmallCode=25
当编译好的方法的本地码小于此值时,内联此方法。
-XX:MaxInlineSize=35
能被内联的方法的最大字节码大小。
-XX:FreqInlineSize=35
能被内联的频繁调用的方法的最大字节码大小。
-Xloggc:<file>
输出带时间戳的垃圾回收状态信息到指定的文件。使用此项会导致Console上不显示垃圾回收信息。
-XX:+HeapDumpOnOutOfMemoryError
堆内存溢出时dump文件,以供分析