java jstack是什么,讓我們一起了解一下?
jstack是java虛擬機自帶的一種堆棧跟蹤工具,用于打印出給定的java進程ID或core file或遠程調試服務的Java堆棧信息,主要分為兩個功能:針對活著的進程做本地的或遠程的線程dump,以及針對core文件做線程dump。
jstack的概念是什么?
1、jstack命令的語法格式:jstack
2、Dump文件:Dump文件是進程的內存鏡像。可以把程序的執行狀態通過調試器保存到dump文件中。Dump文件是用來給驅動程序編寫人員調試驅動程序用的,這種文件必須用專門的工具軟件打開,比如使用Windbg。?
在Windbg中可以通過.dump命令保存進程的dump文件。比如下面的命令把當前進程的鏡像保存為c:\testdump.dmp文件:.dump /ma c:\testdump.dmp。?
其中、ma參數表示dump文件應該包含進程的完整信息,包括整個用戶態的內存,這樣dump文件尺寸會比較大,信息非常全面。如果不是用、ma參數,保存下來的dump文件只包含了部分重要資料,比如寄存器和線程棧空間,文件尺寸會比較小,無法分析所有的數據。?
3、java線程Dump:線程dump是非常有用的診斷java應用問題的工具,每一個java虛擬機都有及時生成顯示所有線程在某一點狀態的線程dump的能力。雖然各個java虛擬機線程dump打印輸出格式上略微有一些不同,但是線程dump出來的信息包含線程基本信息;線程的運行狀態、標識和調用的堆棧;調用的堆棧包含完整的類名,所執行的方法,如果可能的話還有源代碼的行數。
jstack是如何使用的?
實戰案例如下:
package?concurrency; import?java.io.IOException; import?java.io.InputStream; public?class?Test?{ ????public?static?void?main(String[]?args)?throws?InterruptedException,?IOException?{ ????????InputStream?is?=?System.in; ????????int?i?=?is.read(); ????????System.out.println("exit。"); ????} }
以上就是小編今天的分享了,希望可以幫助到大家。