開心生活站

位置:首頁 > IT科技 > 

java,jstack

IT科技3.07W

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

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:estdump.dmp文件:.dump /ma c:estdump.dmp。 

java jstack

其中、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。");    }}

標籤:jstack java