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

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

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出堆,确保可以排查现场问题

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

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

长按订阅更多精彩▼

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

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

原文 

http://mp.weixin.qq.com/s?__biz=MzU0OTE4MzYzMw==&mid=2247489234&idx=5&sn=ad52961e9130c5a5493808c3a6cad35c

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 程序员都应该知道的JVM参数

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址