JVM调优
2017-02-08 18:43:21 0 举报
AI智能生成
JVM调优是指对Java虚拟机进行性能优化,以提高应用程序的运行速度和效率。JVM调优主要包括内存管理、垃圾回收、类加载等方面。内存管理是JVM调优中最重要的部分之一,它包括堆内存和非堆内存的管理。堆内存主要用于存储对象实例,而非堆内存则用于存储类信息、常量、静态变量等。垃圾回收是JVM自动管理内存的过程,它通过回收不再使用的对象来释放内存空间。类加载是指在运行时将类的字节码文件加载到JVM中并创建对应的Class对象。JVM调优需要根据具体的应用场景和需求来进行,一般可以通过调整堆内存大小、选择合适的垃圾回收算法、减少类加载等方式来实现。
作者其他创作
大纲/内容
如何配置
查看配置(ps -ef|grep tomcat)
标准参数(-) <font face="tahoma, arial, sans-serif"><span style="line-height: 18px;">输入java -help 或者java -?查看</span></font>
非标准参数(-X)<font face="tahoma, arial, sans-serif"><span style="line-height: 18px;"> 输入java -X查看</span></font>
<font face="tahoma, arial, sans-serif"><span style="line-height: 18px;">-Xmn(新生代内存最大值,与</span></font><span style="font-size: 12px; font-family: tahoma, arial, sans-serif; line-height: 18px;">-XX:NewSize,-XX:MaxNewSize等价</span><font face="tahoma, arial, sans-serif"><span style="line-height: 18px;">)</span></font>
-Xms(初始堆的最小值) 以websites启动参数为例讲解现有以及调小后的现象
-Xmx(初始化堆的最大值)
非稳定参数(-XX)
性能参数
--XX:NewSize --XX:MaxNewSize
<strong style="margin: 0px; padding: 0px; font-family: tahoma, arial, sans-serif; font-size: 12px; line-height: 18px;">-XX:MaxPermSize (永久区、非堆区最大值) --XX:PermSize</strong>
<span style="font-family: tahoma, arial, sans-serif; font-size: 12px; line-height: 18px;">-XX:NewRatio(新生代与老年代的比例)</span>
<span style="font-family: tahoma, arial, sans-serif; font-size: 12px; line-height: 18px;">-XX:SurvivorRatio(Eden区和suvivor区的比例)</span>
行为参数,(垃圾收集器组合、gc策略)
<strong style="margin: 0px; padding: 0px; font-family: tahoma, arial, sans-serif; font-size: 12px; line-height: 18px;">-XX:-UseSerialGC (串行gc,使用<strong style="margin: 0px; padding: 0px;">Serial+Serial Old</strong>)</strong>
<strong style="margin: 0px; padding: 0px; font-family: tahoma, arial, sans-serif; font-size: 12px; line-height: 18px;">-XX:-UseParallelGC(并行gc,使用<strong style="margin: 0px; padding: 0px;">Parallel Scavenge+Serial Old,server模式下默认规则</strong>)</strong>
<strong style="margin: 0px; padding: 0px; font-family: tahoma, arial, sans-serif; font-size: 12px; line-height: 18px;">-XX:+UseParNewGC(<strong style="margin: 0px; padding: 0px;">ParNew+Serial Old</strong>)</strong>
<strong style="margin: 0px; padding: 0px; font-family: tahoma, arial, sans-serif; font-size: 12px; line-height: 18px;">-XX:+UseConcMarkSweepGC(<strong style="margin: 0px; padding: 0px;">ParNew+CMS+Serial Old组合并发收集,在server模式下,此模式优先于-XX:+UseParNewGc模式</strong>)</strong>
-XX:+UseParallelOldGc(使用Parallel Scavenge + parallel old组合)
所有垃圾收集器
新生代回收器
serial(单线程串行回收器,会停止其他工作线程。client启动方式默认会使用此方式)
parNew(多线程并行回收器,使用停止复制算法,会停止其他工作线程)
<span style="font-family: tahoma, arial, sans-serif; font-size: 12px; line-height: 18px;">Parallel Scavenge(关注cpu吞吐量,也就是运行用户代码时间/总时间,适用于后台计算数据。在数据处理及计算式用此模式)</span>
老年代回收器
cms(多线程并发回收器,使用标记清除算法,不会停止其他工作线程。缩短垃圾回收停顿时间,对用户体验较好。B/S架构使用)
serial old收集器(单线程回收,会停止其他工作线程)
parallel old(多线程并行回收器,会停止其他工作线程,)
调试参数
<strong style="margin: 0px; padding: 0px; font-family: tahoma, arial, sans-serif; font-size: 12px; line-height: 18px;">-XX:HeapDumpPath=./java_pid<pid>.hprof(<strong style="margin: 0px; padding: 0px;">指定导出堆信息时的路径或文件名</strong>)</strong>
<strong style="margin: 0px; padding: 0px; font-family: tahoma, arial, sans-serif; font-size: 12px; line-height: 18px;">-XX:-HeapDumpOnOutOfMemoryError(<strong style="margin: 0px; padding: 0px;">当首次遭遇OOM时导出此时堆中相关信息</strong>)</strong>
<span style="font-family: tahoma, arial, sans-serif; font-size: 12px; line-height: 18px;">-XX:OnOutOfMemoryError="<cmd args>;<cmd args>"(当首次遭遇OOM时 执行命令,如发送邮件等)</span>
子主题
如何监控
jps命令(jps -v)
jstat(jstat -<option> vmid interval count,如:jstat -gcutil 26142 2000 2000)
<span style="color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 21.6px;">S0 — Heap上的 Survivor space 0 区已使用空间的百分比</span><br style="word-break: break-all; color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 12px;"><span style="color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 21.6px;">S1 — Heap上的 Survivor space 1 区已使用空间的百分比</span><br style="word-break: break-all; color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 12px;"><span style="color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 21.6px;">E — Heap上的 Eden space 区已使用空间的百分比</span><br style="word-break: break-all; color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 12px;"><span style="color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 21.6px;">O — Heap上的 Old space 区已使用空间的百分比</span><br style="word-break: break-all; color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 12px;"><span style="color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 21.6px;">P — Perm space 区已使用空间的百分比</span><br style="word-break: break-all; color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 12px;"><span style="color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 21.6px;">YGC — 从应用程序启动到采样时发生 Young GC 的次数</span><br style="word-break: break-all; color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 12px;"><span style="color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 21.6px;">YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒)</span><br style="word-break: break-all; color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 12px;"><span style="color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 21.6px;">FGC — 从应用程序启动到采样时发生 Full GC 的次数</span><br style="word-break: break-all; color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 12px;"><span style="color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 21.6px;">FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒)</span><br style="word-break: break-all; color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 12px;"><span style="color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 21.6px;">GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)</span>
top -Hp pid
printf "%x\n" tid
jstack pid|grep tid 16进制
jinfo vmid
jmap vmid (jmap -dump:file=./ad.prof 26142导出dump, jmap -histo:live 26142|more 查看对象)
jmap -J-d64 -heap pid
jhat -J-Xmx512m jmap.prof
如何调优
子主题
子主题
子主题
0 条评论
下一页