33

程序员都应该知道的JVM参数

 3 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzU0OTE4MzYzMw%3D%3D&%3Bmid=2247489234&%3Bidx=5&%3Bsn=ad52961e9130c5a5493808c3a6cad35c
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

yIj6BzV.jpg!web

Trace跟踪参数

1.-verbose:gc

2.-XX:+printGC

可以打印GC的简要信息 [GC 51790K->1374K(115872K), 0.0001606 secs]

3.-XX:+PrintGCDetails(打印GC详细信息)

4.-XX:+PrintGCTimeStamps(打印CG发生的时间戳 )

[GC[DefNew: 6716K->0K(4528K), 0.0007 secs] 8790K->374K(15872K), 0.0002232 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] - 5.-XX:+PrintGCDetails的输出

6.-Xloggc:log/gc.log (制定GC的输出位置)

7.-XX:+PrintHeapAtGC(每次一次GC后,都打印堆信息)

8.-XX:+TraceClassLoading (打印class的加载) 9.-XX:+PrintClassHistogram(按下Ctrl+C后,打印类的信息)

堆的分配参数

1.-Xmx –Xms(指定最大堆和最小堆)

System.out.print("Xmx=");
System.out.println(Runtime.getRuntime().maxMemory()/1024.0/1024+"M");
System.out.print("free mem=");
System.out.println(Runtime.getRuntime().freeMemory()/1024.0/1024+"M");
System.out.print("total mem=");
System.out.println(Runtime.getRuntime().totalMemory()/1024.0/1024+"M");

2.-Xmn(设置新生代大小)

3.-XX:NewRatio

新生代(eden+s0+S1)和老年代(不包含永久区)的比值。

这个值其实是年老代与年轻代的比值,-XX:NewRatio=4表示年老代与年轻代的比值为4:1 即年轻代占堆的1/5

4.-XX:SurvivorRatio

设置两个Survivor区和eden的比8表示 两个Survivor:eden=2:8,即一个Survivor占年轻代的1/10(会有一个s空置) 为什么需要两个s区?

堆的分配参数

1.-XX:+HeapDumpOnOutOfMemoryError (OOM时导出堆到文件)

2.-XX:+HeapDumpPath(导出OOM的路径)

-Xmx20m -Xms5m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/a.dump

3.-XX:OnOutOfMemoryError

在OOM时,执行一个脚本 "-XX:OnOutOfMemoryError=D:/tools/jdk1.7_40/bin/printstack.bat %p“ 当程序OOM时,在D:/a.txt中将会生成线程的dump 可以在OOM时,发送邮件,甚至是重启程序

非堆的分配参数

1.-XX:PermSize(表示非堆区初始内存分配大小,其缩写为permanent size(持久化内存))

2、-XX:MaxPermSize(表示对非堆区分配的内存的最大上限)

方法区和运行时常量

3.-Xss 栈内存大小

4.-XX:MaxDirectMemorySize 直接内存大小 不指定默认和堆的Xmx一样大小。

总结

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

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

幸存代占新生代的1/10

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

特别推荐一个分享架构+算法的优质内容,还没关注的小伙伴,可以长按关注一下:

eEjEFnz.jpg!web

长按订阅更多精彩▼

rEFzyej.jpg!web

如有收获,点个在看,诚挚感谢


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK