img

JVM调优配置分析记录

旁观者 1年前 ⋅ 896 阅读

JVM配置相关参数记录,Java的垃圾回收会中断进程,实际应用中,通过观察fullgc后的空间大小等,不断地调整jvm参数,使得系统的gc频率和耗时更合理,提高程序的工作效率和系统性能。

一.常用的JVM启动参数设置

-Xms  ##初始堆大小  

-Xmx  ##最大堆大小

-Xmn  ##年轻代大小

-XX:NewSize	 ##设置年轻代大小 

-XX:MaxNewSize	 ##年轻代最大值 

-XX:PermSize	 ##设置持久代(perm gen)初始值

-XX:MaxPermSize	 ##设置持久代最大值

-Xss  ##每个线程的堆栈大小

-XX:NewRatio	 ##年轻代与年老代的比值

-XX:SurvivorRatio	 ##Eden区与Survivor区的大小比值

-Xnoclassgc	 ##禁用垃圾回收

-XX:+UseAdaptiveSizePolicy	 ##自动选择年轻代区大小和相应的Survivor区比例

二.垃圾回收收集器

-XX:+UseSerialGC  ##新生代串行(Serial),老年代串行(Serial Old)

-XX:+UseParNewGC  ##新生代并行(ParNew),老年代串行(Serial Old)

-XX:+UseConcMarkSweepGC  ##新生代并行(ParNew),老年代串行(CMS),备份(Serial Old)

-XX:+UseParallelGC  ##新生代并行吞吐(Parallel Scavenge),老年代串行(Serial Old)

-XX:+UseParalledlOldGC  ##新生代并行吞吐(Parallel Scavenge),老年代并行吞吐(Parallel Old)

三.JVM查看命令

1.jps

jps –v   ##输出jvm参数

jps -l   ##输出pid和主类

jps -p   ##只输出进程号

2.jmap

jmap -heap [pid]  ##打印heap概要信息

jmap -dump:live,format=b,file=heap.bin <pid>  ##将当前的存活对象dump到文件,此时会触发FullGC

jmap -histo:live <pid>  ##打印每个class的实例数目,内存占用,类全名信息.live子参数加上后,只统计活的对象数量. 此时会触发FullGC

3.jstat

jstat -class [pid]   ##类加载统计

jstat -compiler [pid]   ##编译统计

jstat -gc [pid]   ##垃圾回收统计

jstat -gccapacity [pid]  ##堆内存统计

jstat -gcnew [pid]  ##新生代垃圾回收统计

jstat -gcnewcapacity [pid]  ##新生代堆内存统计

jstat -gcold [pid]   ##老年代垃圾回收统计

jstat -gcoldcapacity [pid]  ##老年代堆内存统计

jstat -gcmetacapaticy [pid]   ##元数据空间统计

四.JVM常用配置大小

通过多次调整,获取fullgc后老年代的大小

Xms=Xmx大小约等于fullgc后老年代大小的3-4倍

Xmn大小约为Xmx的3/8或者fullgc后老年代大小的1.5倍

PermSize和MaxPermSize大小为老年代存活对象的1.2-1.5倍。


全部评论: 0

    我有话说: