JVM调优

1、相关命令

jps
/*内存信息输入到 log.txt 文件中
*num:序号 instances:实例数量 bytes:占用空间大小 
*class name:类名称,[C is a char[],[S is a short[],
*[I is a int[],[B is a byte[],[[I is a int[][]
*/
jmap -histo 进程id > ./log.txt

//查看堆的详细信息,各个区域的使用情况
jmap -heap 进程id

//查找死锁
jstack 进程id

//查找占用cup的进程
top -p <pid>
-------> H
 jstack 进程id | grep -A 10 16进制的id

//查看JVM参数
Jinfo

/*垃圾回收
* S0C:第一个幸存区的大小,单位KB
* S1C:第二个幸存区的大小
* S0U:第一个幸存区的使用大小S1U:第二个幸存区的使用大小
* EC:伊甸园区的大小
* EU:伊甸园区的使用大小
* OC:老年代大小
* OU:老年代使用大小
* MC:方法区大小(元空间)
* MU:方法区使用大小
* CCSC:压缩类空间大小
* CCSU:压缩类空间使用大小
* YGC:年轻代垃圾回收次数
* YGCT:年轻代垃圾回收消耗时间,单位s
* FGC:老年代垃圾回收次数
* FGCT:老年代垃圾回收消耗时间,单位s
* GCT:垃圾回收消耗总时间,单位s
*/
jstat -gc pid

2、优化思路

  • 观察Eden的使用情况来估计每秒大概新增多少对象,计算对象新增的速率。(不一定是每秒,具体看系统运行情况和负载均衡)
  • 计算Young GC的触发频率和每次平均耗时(
    YGCT:年轻代垃圾回收消耗时间 / YGC:年轻代垃圾回收次数)
  • 每次Young GC后有多少对象进入老年代(观察年轻代和老年代内存的变化,每次Young GC之后老年的变化情况)
  • Full GC的触发频率和耗时(FGCT:老年代垃圾回收消耗时间 / FGC:老年代垃圾回收次数)
  • 每次Young GC之后存活的对象小于Survivor区域的50%,存放在年轻代里。尽量的减少Full GC的频率,避免Full GC对JVM性能的影响案例分析
    结合具体的案例和对象分配的概念,经过参数的配置来控制Full GC的次数

3、Arthas的使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值