1.Trace跟踪参数
-verbose:gc,-XX:+printGC
可以打印GC的简要信息
-XX:+PrintGCDetails
:打印GC详细信息-XX:+PrintGCTimeStamps
:打印GC发生的时间戳
-Xloggc:log/gc.log
:指定GC log的位置,以文件输出
-XX:+PrintHeapAtGC
:每次GC后,都打印堆信息
2.堆的分配参数
-XX:+TraceClassLoading
:监控类的加载
-XX:+PrintClassHistogram
:按下Ctrl+Break后打印类的信息,也可使用jmap -histo pid
-Xmx -Xms
:指定最大堆和最小堆,调用System.gc()会通知JVM进行垃圾回收,Java会尽可能维持在最小堆
-Xmn
:设置新生代大小-XX:NewRatio
:新生代(eden + 2*s)和老年代(不包含永久区)的比值,如4表示:新生代:老年代=1:4,即年轻代占堆的1/5-XX:SurvivorRation
:设置两个Survivor区和eden的比,8表示两个Survivor:eden=2:8,即一个Survivor占年轻代的1/10
-XX:HeapDumpOnOutOfMemoryError
:OOM时导出堆到文件-XX:HeapDumpPath
:导出OOM的路径-XX:OnOutOfMemoryError
:在OOM时,执行脚本,可以在OOM时,发送邮件,甚至是重启程序
注意:根据实际事情调整新生代和幸存代的大小,在OOM时,记得Dump出堆,确保可以排查现场问题
-XX:PermSize -XX:MaxPermSize
:设置永久区的初始空间和最大空间,表示一个系统可以容纳多少个类型
注意:如果堆空间还没用完也抛出了OOM,有可能是永久区导致的
3.栈的分配参数
-Xss
:通常只有几百K,决定了函数调用的深度,每个线程都有独立的栈空间,局部变量、参数分配在栈上
参考:JVM参数设置大全