1 JDK5.0包括的調試工具
我們在這裡對JDK5.0的調試工具做大緻的概念性的介紹,然後希望通過介紹我自己在實際工作中使用這些工具解決問題的執行個體來讓大家對這些工具有更深入的了解。
JDK5.0裡面加入了jstack, jconsole, jinfo, jmap, jdb, jstat, jps, 下面對這些工具做簡單介紹:
jstack -- 如果java程式崩潰生成core檔案,jstack工具可以用來獲得core檔案的java stack和native stack的資訊,進而可以輕松地知道java程式是如何崩潰和在程式何處發生問題。另外,jstack工具還可以附屬到正在運作的java程式中,看到 當時運作的java程式的java stack和native stack的資訊, 如果現在運作的java程式呈現hung的狀态,jstack是非常有用的。目前隻有在Solaris和Linux的JDK版本裡面才有。
jconsole – jconsole是基于Java Management Extensions (JMX)的實時圖形化監測工具,這個工具利用了内建到JVM裡面的JMX指令來提供實時的性能和資源的監控,包括了Java 程式的記憶體使用,Heap size, 線程的狀态,類的配置設定狀态和空間使用等等。
jinfo – jinfo可以從core檔案裡面知道崩潰的Java應用程式的配置資訊,目前隻有在Solaris和Linux的JDK版本裡面才有。
jmap – jmap 可以從core檔案或程序中獲得記憶體的具體比對情況,包括Heap size, Perm size等等,目前隻有在Solaris和Linux的JDK版本裡面才有。
jdb – jdb 用來對core檔案和正在運作的Java程序進行實時地調試,裡面包含了豐富的指令幫助您進行調試,它的功能和Sun studio裡面所帶的dbx非常相似,但 jdb是專門用來針對Java應用程式的。
jstat – jstat利用了JVM内建的指令對Java應用程式的資源和性能進行實時的指令行的監控,包括了對Heap size和垃圾回收狀況的監控等等。
jps – jps是用來檢視JVM裡面所有程序的具體狀态, 包括程序ID,程序啟動的路徑等等。
另外,還有些其他附帶的工具在這裡沒有列出,比如Heap Analysis Tool, kill -3 方法等等,這些在JDK5.0之前就有,同樣也是非常有用的性能調優工具,大家可以參照相應的文檔資料來學習,在文章後面也會推薦一些相應的文檔給大家作為參考。
在做過的項目中,曾經有幾個是使用jstack和jconsole來解決問題的。