转载:http://blog.csdn.net/kimylrong/article/details/50970493java
查询、监控、分析Java应用程序的时候,咱们关注的点主要集中在资源利用,好比CPU,内存,IO,线程等。其中内存以及线程的分析尤其常见。内存,是否有内存泄漏,各个区块内存分配是否大小合适。线程,数目是否合理,有没有死锁,运行状态如何。工具
jps是JDK提供的一个小工具,上面的命令会把操做系统里面的java应用都展现出来,显示PID,启动类或者JAR,VM参数。能够经过jps -help
进一步了解详细信息。固然也能够用操做系统的netsat查询PID。下文提到的PID均为jps中获得的PID。操作系统
显示JVM的参数,包括显示设置的和系统默认的。好比所用的垃圾回收器,堆的最大值等。也能够用jinfo -sysprops PID
来显示System.getProperties()的内容。.net
显示JVM的各个内存区使用状况(容量和使用量),GC的次数和耗时。能够经过命令jstat -class PID
查看class的加载状况。插件
把JVM的堆dump出来,用更高级的分析工具进行分析。命令jmap -heap PID
能够查看堆的配置信息和使用状况,也颇有用。线程
查看线程运行状况,检测是否有死锁。code
JDK提供的一个可视化资源查看,监控工具。blog
JDK提供的另一个一站式资源查看,监控,管理工具。支持插件机制,能够本身安装插件,定制jvisualvm。经常使用的是Visual GC插件。也能够经过该工具dump JVM的堆。也能够导入已经dump出来的堆信息进行分析。内存