`
须等待
  • 浏览: 210806 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JDK调优工具的研究

    博客分类:
  • Java
阅读更多
JVM 调优工具研究

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

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

exp:
[root@test13 tmp]# 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
分享到:
评论
1 楼 cywhoyi 2013-10-16  
JCMD,2012JavaOne上有特别提到http://marxsoftware.blogspot.com/2012/10/javaone-2012-diagnosing-application-jcmd.html

相关推荐

Global site tag (gtag.js) - Google Analytics