现在的位置: 首页 > 综合 > 正文

使用jvisualvm监控JAVA程序,注意对程序性能的影响

2013年10月10日 ⁄ 综合 ⁄ 共 604字 ⁄ 字号 评论关闭

      最近在使用阿里的Dubbo【http://code.alibabatech.com/wiki/display/dubbo/Home-zh】做一个实时分析功能,为了提高性能,对程序进行了很多的优化工作,在此过程中JDK中的jvisualvm的确功劳不小,但是也有让我误解的地方。

   先说它的功劳:

   第一:可以帮我监控线程的数量,及时发现没有正常结束的线程。由于给dubbo配置了800的线程池,我当前活动的线程中守护线程为826,总数减去800个线程池中的线程,dubbo占用了26个守护线程,再多出来的线程大多就是我程序中生成的线程了。

   第二:可以监控CPU的使用情况。

  第三:监控堆占用内存的情况。

  第四:监控总的类的加载数量。


  以上四个监控,均无须修改原有的JAVA源代码,只需要只步简单的配置即可实现,详细配置可参见:【http://blog.csdn.net/ssergsw/article/details/9933227

下面说一下它的问题:

添加了监控后,堆内存的占用情况和正常时占用有不小的偏差:

刚开始使用监控后3分钟的情况:



下面是使用监控后10分钟的情况:




对比两个图,可以看出,在没有使用监控的时候,堆内存的占用比较平衡,使用了监控后堆内存迅速增加,之后大约5分钟后GC一次,然后又慢慢上升,所以建议大家在使用监控的时候,多亲关注线程和类的加载的情况,另外,不要长期使用工具监控程序!

抱歉!评论已关闭.