轉載: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出來的堆信息進行分析。內存