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倍。
注意:本文归作者所有,未经作者允许,不得转载