天天看點

JVM中常用堆棧跟蹤内建指令

   在使用Java的程式中難免會遇上程式異常的現象,此時就可以使用JDK下的jstack和jmap來跟蹤觀察JVM中的記憶體堆棧資訊用以分析,不過注意的是如果是在windows版本或者是開源版中一般都是沒有的,如果需要使用需要安裝相應的開發調試工具,下面就簡單的說一說:

jstack 一般而言之後跟着都是Java程式運作的pid或者是相應的Java代碼檔案,如:jstack $pid,平時可以把相關的堆棧資訊再導出到某一個檔案中正用以進一步觀察,如:jstack $pid > file.dump

預設是沒有帶這些參數選項的,僅能列印一些簡單的資訊
-heap    用于列印Java的堆棧的摘要資訊
-histo[:live]    用于列印堆棧的實時資訊,常用于堆棧的實時跟蹤
-clstats    用于列印Java中的類加載的資訊
-finalizerinfo    用于列印關于等待确定的對象的資訊
-dump:<dump-options>    把相關的堆棧資訊dump至二進制檔案中用于開發調試工具中使用,如:jmap -dump:format=b,file=Java_jmp.hprof $pid
-F    該選項跟着-dump選項一起使用,表示在dump出的二進制檔案中不列印列印堆棧的實時資訊,但是其他的資訊都有列印
-J<flag>    将标志傳給Java程式,即在做斷點