一、常用命令:
在JDK的bin目彔下,包含了java命令及其他實用工具。
jps:查看本機的Java中進程信息。
jstack:打印線程的棧信息,制作線程Dump。
jmap:打印內存映射,制作堆Dump。
jstat:性能監控工具。
jhat:內存分析工具。
jconsole:簡易的可視化控制台。
jvisualvm:功能強大的控制台。
二、認識Java Dump:
什么是Java Dump?
Java虛擬機的運行時快照。將Java虛擬機運行時的狀態和信息保存到文件。
線程Dump,包含所有線程的運行狀態。純文本格式。
堆Dump,包含線程Dump,幵包含所有堆對象的狀態。二進制格式。
Java Dump有什么用?
補足傳統Bug分析手段的不足: 可在任何Java環境使用;信息量充足。 針對非功能正確性的Bug,主要為:多線程幵發、內存泄漏。
制作Java Dump
使用Java虛擬機制作Dump
指示虛擬機在發生內存不足錯誤時,自動生成堆Dump
-XX:+HeapDumpOnOutOfMemoryError
使用圖形化工具制作Dump
使用JDK(1.6)自帶的工具:Java VisualVM。
使用命令行制作Dump
jstack
:打印線程的棧信息,制作線程Dump。
jmap
:打印內存映射,制作堆Dump。
步驟:
- 檢查虛擬機版本(java -version)
- 找出目標Java應用的進程ID(jps)
- 使用jstack命令制作線程Dump • Linux環境下使用kill命令制作線程Dump
- 使用jmap命令制作堆Dump
from: https://www.hollischuang.com/archives/308