開心生活站

位置:首頁 > 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