常用JVM配置参数

1.Trace跟踪参数

 1.1 -verbose:gc

  -XX:+printGC

  可以打印GC的简要信息

  [GC 4790K->374K(15872K), 0.0001606 secs]

  [GC 4790K->374K(15872K), 0.0001474 secs]

  [GC 4790K->374K(15872K), 0.0001563 secs]

  [GC 4790K->374K(15872K), 0.0001682 secs]

   1.2-XX:+PrintGCDetails

  打印GC详细信息

-XX:+PrintGCTimeStamps

打印CG发生的时间戳

[GC[DefNew: 4416K->0K(4928K), 0.0001897 secs] 4790K->374K(15872K), 0.0002232 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]

 1.3 -XX:+PrintGCDetails的输出

 1.4 -Xloggc:log/gc.log

指定GC log的位置,以文件输出

帮助开发人员分析问题

 1.5 -XX:+PrintHeapAtGC

每次一次GC后,都打印堆信息

  1.6

-XX:+TraceClassLoading

监控类的加载

1.7 -XX:+PrintClassHistogram

按下Ctrl+Break后,打印类的信息:

分别显示:序号、实例数量、总大小、类型

2.堆的分配参数

  2.1-Xmx Xms

指定最大堆和最小堆

 2.2 -XX:+HeapDumpOnOutOfMemoryError

OOM时导出堆到文件

-XX:+HeapDumpPath

2.3  -XX:OnOutOfMemoryError

OOM时,执行一个脚本

"-XX:OnOutOfMemoryError=D:/tools/jdk1.7_40/bin/printstack.bat %p

 当程序OOM时,在D:/a.txt中将会生成线程的dump

可以在OOM时,发送邮件,甚至是重启程序

导出OOM的路径

总结:根据实际事情调整新生代和幸存代的大小

官方推荐新生代占堆的3/8

幸存代占新生代的1/10

OOM时,记得Dump出堆,确保可以排查现场问题

3.永久区的分配参数

 -XX:PermSize  -XX:MaxPermSize

设置永久区的初始空间和最大空间

他们表示,一个系统可以容纳多少个类型

原文地址:https://www.cnblogs.com/tandy/p/8999649.html