jvm参数介绍,以及优化流程

优化流程
启动jar包时候,带参数启动jar包一般情况 只需要设置-xms 以及xmx
例如:java -Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m -jar 你的jar包
调优的原则
1.减少gc的次数
2.减少gc的时间
3.减少full gc
常用JVM参数参考:
在这里插入图片描述

运行参数配置打印gc日志
-XX:+PrintGCDetails -Xloggc:D:/gc.log -verbose:gc -XX:+PrintGCDateStamps
可以查看gc和fullgc的执行时间,以及gc时释放了多少内存空间,由于fullgc会导致线程停顿,所以尽量减少发生fullgc的频率。
该参数会在指定的目录下,生成jc.log文件,里面就是gc的日志。
JVM调优工具
首先需要切换到jdk的bin目录下,然后执行以下命令。
jps -lv | grep exam-
查看当前运行的虚拟机启动的所有进程、执行主类的全名、JVM启动参数。
jstat -gc pid 500 10
(pid通过上述jps命令查得,500表示多少毫秒打印一次gc情况,10表示总共打印多少次)
每500毫秒打印一次Java堆状况(各个区的容量、使用容量、gc时间等信息)。
在这里插入图片描述
S0C:第一个幸存区的大小 S1C:第二个幸存区的大小
S0U:第一个幸存区的使用大小 S1U:第二个幸存区的使用大小
EC:伊甸园区的大小 EU:伊甸园区的使用大小
OC:老年代大小 OU:老年代使用大小
MC:方法区大小 MU:方法区使用大小
CCSC:压缩类空间大小 CCSU:压缩类空间使用大小
YGC:年轻代垃圾回收次数 YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数 FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间

jmap -histo pid
以打印出当前堆中所有每个类的实例数量和内存占用。
Jvisualvm
可以分析内存快照,在jvisualvm菜单的“文件”-“装入”,选择堆内存快照。
Jstack
可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多
命令ps -ef | grep mrf-center | grep -v grep root 21711 1 1 14:47 pts/3 00:02:10 java -jar mrf-center.jar 命令:top -Hp pid 命令printf “%x\n” 21742 得到21742的十六进制值为54ee 命令root@ubuntu:/# jstack 21711 | grep 54ee “PollIntervalRetrySchedulerThread” prio=10 tid=0x00007f950043e000 nid=0x54ee in Object.wait()

调优经验
物理内存一定的情况下,新生代设置越大,老年代就越小,Full GC频率就越高,但Full GC时间越短;相反新生代设置越小,老年代就越大,Full GC频率就越低,但每次Full GC消耗的时间越大。
垃圾收集器尽量使用并行的垃圾收集器。
一般吞吐量优先的应用都有一个很大的年轻代和一个较小的年老代.原因是,这样可以尽可能回收掉大部分短期对象,减少中期的对象,而年老代尽存放长期存活对象.
当年轻代设置过小时会导致:1.YGC次数更加频繁 2.可能导致YGC对象直接进入年老代,如果此时年老代满了,会触发FGC.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值