JDK调优工具的研究

JVM 调优工具研究

JDK自带了一系列的工具,一般可用于JVM的调优实践,这里做一个研究。

1、jps
jps工具可以查看到当前机器上运行的Java程序的JVM进程id,这个id通常是后续其他工具使用的基础。另外,jps工具还有一些其他的参数,可以
允许我们查看到Java程序的启动参数和当前JVM的启动参数。

exp:
# jps
8636 QuorumPeerMain
3497 Bootstrap
2486 Jps

参数: -l 显示当前java启动类的全程
-v 显示JVM实例的启动参数
-m 显示java程序的启动参数

2、jstat
jstat工具可以查看到指定JVM实例的内存使用情况,如新生代、老年代等的gc情况。

参数详解: jstat -option vmid interval

vmid 是jps查到的JVM实例的id
interval 是连续执行的间隔时间,可选参数,不填将只执行一次
-option 是启动参数,指定jstat命令显示哪些信息
-gcutil 最常用的命令了,可以查看各个内存部分的使用情况和gc时间等信息
-gc 更详细的内存信息,是gcutil的升级版本
-class 加载class的情况
-gccause 可以打印出gc原因

jstat -gcutil vmid 1s
output:
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 22.02 3.27 5.50 49.12 63 186.797 0 0.000 186.797
每秒输出一次
S0 是0号Survivor Space
S1 是1号Survivor Space
E 是Eden
O 是Old Generation
P 是Permanent Generation
YGC 是young gc的次数
YGCT 是young gc花费的总时间
FGC 是full gc的次数
FGCT 是full gc花费的总时间
GCT 是所有gc的时间

jstat -gc vmid 1s
output
S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT
9088.0 9088.0 0.0 2001.0 72832.0 24685.2 728192.0 40082.0 131072.0 64380.4 63 186.797 0 0.000 186.797
C代表Capacity,是可使用的空间
U代表Used, 是已用空间

3、jmap
jmap工具可以查到堆内存的具体使用情况,可以看到堆内存中每个类占的空间大小。

参数: jmap -option vmid
-option 是启动参数,指定jmap要做的事情
-heap 可以看到堆内存的使用情况
-dump 常用的参数,可以导出一个内存映像文件,解析之后可以看到内存的使用情况。jmap -dump:format=b,file=file.hprof vmid

jmap的导出文件可以用eclipse mat工具来解析。

关于性能调优的一些思考:一般来说,java程序出现性能问题,是由机器本身的两个瓶颈造成,一者是内存问题,另一则是CPU问题。java的性能问题基本可以由这两个方面来解决。当出现性能问题,首先观察问题出现的症状,如果是方法执行时间过长或出现死锁问题,则归类于CPU问题,这类问题一般是由于代码质量不高,或者是线程安全问题或者是算法效率太低引起的,那么应该定位到问题所在,修改代码;如果是程序出现偶发性的卡顿之类的问题,则诊断为内存问题,经常出现的情况就是频繁GC导致的卡顿等问题,这时候就可以用到我们的JDK工具来定位问题所在,从而解决问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值