使用jstack
介紹:
- jstack命令用於打印指定Java進程、核心文件或遠程調試服務器的Java線程的Java堆棧跟蹤信息。
- jstack命令可以生成JVM當前時刻的線程快照。線程快照是當前JVM內每一條線程正在執行的方法堆棧的集合,生成線程快照的主要目的是定位線程出現長時間停頓的原因,如線程間死鎖、死循環、請求外部資源導致的長時間等待等。
- 如果java程序崩潰生成core文件,jstack工具可以用來獲得core文件的java stack和native stack的信息,從而可以輕鬆地知道java程序是如何崩潰和在程序何處發生問題。
- 當指定的進程在64位Java虛擬機上運行時,可能需要指定-J-d64選項,例如:jstack -J-d64 -m pid。
- 該命令可能在未來的版本中不可用!!!
jstack [ options ] pid pid:Java進程的ID,可以通過jps命令查詢到。 options 參數說明 -F 當 jstack [-l] pid 沒有響應時,強制打印一個堆棧轉儲。 -l 打印關於鎖的其他信息,比如擁有的java.util.concurrent ownable同步器的列表。 -m 打印包含Java和本機C/ C++幀的混合模式堆棧跟蹤。 -h 打印幫助信息 -help 打印幫助信息
一般使用 jstack pid 查看錯誤信息,如:
轉自:https://zhuanlan.zhihu.com/p/475571849