使用jvisualvm监控JAVA程序,注意对程序性能的影响
2013-08-12 20:33
531 查看
最近在使用阿里的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分钟的情况:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/37268ccbdb9935e0cc642ce4fb220e2a)
下面是使用监控后10分钟的情况:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/d0b8398dd477f8cac5268d079d095e45)
对比两个图,可以看出,在没有使用监控的时候,堆内存的占用比较平衡,使用了监控后堆内存迅速增加,之后大约5分钟后GC一次,然后又慢慢上升,所以建议大家在使用监控的时候,多亲关注线程和类的加载的情况,另外,不要长期使用工具监控程序!
先说它的功劳:
第一:可以帮我监控线程的数量,及时发现没有正常结束的线程。由于给dubbo配置了800的线程池,我当前活动的线程中守护线程为826,总数减去800个线程池中的线程,dubbo占用了26个守护线程,再多出来的线程大多就是我程序中生成的线程了。
第二:可以监控CPU的使用情况。
第三:监控堆占用内存的情况。
第四:监控总的类的加载数量。
以上四个监控,均无须修改原有的JAVA源代码,只需要只步简单的配置即可实现,详细配置可参见:【http://blog.csdn.net/ssergsw/article/details/9933227】
下面说一下它的问题:
添加了监控后,堆内存的占用情况和正常时占用有不小的偏差:
刚开始使用监控后3分钟的情况:
下面是使用监控后10分钟的情况:
对比两个图,可以看出,在没有使用监控的时候,堆内存的占用比较平衡,使用了监控后堆内存迅速增加,之后大约5分钟后GC一次,然后又慢慢上升,所以建议大家在使用监控的时候,多亲关注线程和类的加载的情况,另外,不要长期使用工具监控程序!
相关文章推荐
- 使用JDK自带jvisualvm监控tomcat和java程序
- 如何使用JDK自带的jvisualvm监控java程序【Java HotSpot(TM)】
- 使用JRockit Mission Control监控Java程序运行性能
- 如何使用JVisualVM远程监控和优化Tomcat和Java程序的内存和CPU
- 使用JDK自带jvisualvm监控tomcat和java程序
- 使用JRockit Mission Control监控Java程序运行性能
- Linux下Java线程详细监控和其dump的分析使用—-分析Java性能瓶颈
- jvisualvm java性能监控
- 使用JDK自带的VisualVM进行Java程序的性能分析
- jvisualvm监控java程序
- java开发中如何使用JVisualVM进行性能分析
- 选择排序法 当数据量较小的时候,使用基本排序方案并不会显著影响程序性能。 选择排序是十分常用的基本排序方案之一。
- 选择排序法 当数据量较小的时候,使用基本排序方案并不会显著影响程序性能。 选择排序是十分常用的基本排序方案之一。
- Linux下Java线程详细监控和其dump的分析使用—-分析Java性能瓶颈
- 论JAVA 在项目中使用system.out打印调试信息的性能影响
- Java中使用final修饰符对程序有哪些影响
- Linux下Java线程详细监控和其dump的分析使用—-分析Java性能瓶颈
- C#中使用try...catch...是否会影响程序性能
- java代码中黄色警告是否会对程序编译和运行有性能上的影响
- java性能监控工具JProfiler的使用