9.性能优化-监控-JVM监控工具

1.JConsole
JConsole随Java 5和更高版本分发,位于%JAVA_HOME%/bin目录下。
可以用来监控堆使用,类加载、CPU使用以及线程情况,如下图所示:

[img]http://dl2.iteye.com/upload/attachment/0105/9586/48030418-361c-31e1-8b85-0845de2d5a67.jpg[/img]

个人感觉除了线程tab页,点击线程可以看到执行的线程堆栈,以及可以通过[检测到死锁]按钮方便的查看死锁的线程外,其余功能可以被jvisualvm替代。
2.JVisualVM
JVisualVM从Java 6 Update 7引入,虽然JVisualVM运行需要依赖Java 6,但是它同样可以监控运行在java 1.4和java 5中的应用。JVisualVM被视为第2代JConsole。
常用功能:
1)创建线程转储
2)创建内存转储
3)提供了CPU和内存性能分析功能,但不如NetBeans Profiler强大,NetBeans Profiler可以监视热点方法占用CPU百分比还记录了方法调用次数,内存监视则比JVisualVM多记录了对象年龄,另外还可以查看调用堆栈。


[img]http://dl2.iteye.com/upload/attachment/0105/9588/4435b2f9-df1f-30ae-a9a4-1d6b634cfe6f.jpg[/img]


3. VisualGC
本章着重介绍一下VisualGC。
VisualGC是JVisualVM的插件。
在JVisualVM中选择"工具"->"插件",在"可用插件"tab页中,选中visualgc,然后点击安装,下载完毕后重启JVisualVM,如果看到下图的visualgc tab页则说明安装成功。

[img]http://dl2.iteye.com/upload/attachment/0105/9590/300758a8-218f-3d0c-a286-8f1d8f383cc6.jpg[/img]

1)Spaces区域。
这些垃圾收集区域与JVM给他们分配的最大值成比例,深色区域是永久代的当前使用量,灰色则代表最大值,另外未分配内存为浅灰,已分配内存为深灰。上图中由于给-Xms和-Xmx设置了相同的值来避免内存频发扩充,所以上图中看不到浅灰区域。
Perm:永久代情况。
Old:老年代情况。
Eden:新生代Eden区域。
S0和S1:新生代两个Survivor区域。
2)Graphs区域。
Compile Time(编译时间):487 compiles 表示编译总数,4.277s表示编译累计时间。一个脉冲表示一次JIT编译,窄脉冲表示持续时间短,宽脉冲表示持续时间长。

Class Loader Time(类加载时间): 3322loaded表示加载类数量, 0 unloaded表示卸载的类数量,1.577s表示类加载花费的时间。

GC Time(GC Time):3collections表示垃圾收集的总次数,9.242ms表示垃圾收集花费的时间,last cause表示最近垃圾收集的原因。

Eden Space(Eden 区):括号内的511.875M表示最大容量,384.000M表示当前容量,后面的292.562M表示当前使用情况,2collections表示垃圾收集次数,9.242ms表示垃圾收集花费时间。

Survivor 0/Survivor 1(S0和S1区):括号内的170.625M表示最大容量,64.000M表示当前容量,之后的值是当前使用情况。

Old Gen(老年代):括号内的1.500G表示最大容量,1.500G表示当前容量,之后的0表示当前使用情况,0collections表示垃圾收集次数 ,0s表示垃圾收集花费时间。

Perm Gen(永久代):括号内的64.000M表示最大容量,64.000M表示当前容量,之后的24.874M表示当前使用情况。

如果使用CMS或者Serial收集器,还会显示Histogram用来显示Survivor中对象的年龄。如果经常出现实际晋升阀值小于最大晋升阀值,则说明发生了Survivor溢出,需要进行JVM优化。


参考资料:
1. Charlie Hunt Binu John 著 柳飞 陆明刚译《Java性能优化权威指南》
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值