Jvm dump介紹與使用(記憶體與線程)

來源:互聯網
上載者:User

標籤:定位   記憶體   使用率   並且   作業系統   開啟   rac   linux   執行   

很多情況下,都會出現dump這個字眼,java虛擬機器jvm中也不例外,其中主要包括記憶體dump、線程dump。

 

當發現應用記憶體溢出或長時間使用記憶體很高的情況下,通過記憶體dump進行分析可找到原因。

當發現cpu使用率很高時,通過線程dump定位具體哪個線程在做哪個工作佔用了過多的資源。

 

首先,記憶體dump是指通過jmap -dump <pid>輸出的檔案,而線程dump是指通過jstack <pid>輸出的資訊。

兩個dump可以單獨使用,也可以在特定場合下結合使用。

 

在linux作業系統下(已安裝jdk),執行jps命令,列出正在啟動並執行java程式的進程ID。

 

使用top查看目前正在啟動並執行進程使用系統資源情況。

 

其中進程號為24660的進程,jps輸出資料行表和top列表中都出現,並且在top列表中顯示是由java COMMAND啟動的。

其中%MEM為2.9,說明佔用系統記憶體為2.9%,當前系統大概8G記憶體;另外%CPU指的是當前進程使用CPU資源百分比;

 

【記憶體dump】

jmap –dump:live,format=b,file=heap.bin <pid>

參考資料:http://docs.oracle.com/javase/6/docs/technotes/tools/share/jmap.html

 

將產生的heap.bin檔案,使用ha456.jar工具開啟分析。java -jar -Xmx3000m ha456.jar

 

【線程dump】

jstack -m <pid> >jvm_deadlocks.txt

jstack -l <pid> >jvm_listlocks.txt

參考資料http://docs.oracle.com/javase/6/docs/technotes/tools/share/jstack.html

使用top -H -p <pid>找出某進程中要分析的線程ID,然後將線程ID轉換為16進位後,線上程dump檔案中搜尋相關資訊

 

Jvm dump介紹與使用(記憶體與線程)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.