jmap命令可以獲得運行中的jvm的堆的快照,從而可以離線分析堆,以檢查內存洩漏,檢查一些嚴重影響性能的大對象的創建,檢查系統中什麼對象最多,各種對象所佔內存的大小等等。可以使用jmap生成Heap Dump。 我們要比較清楚楚執行後會發生什麼,否則有可能就會導致線上嚴重故障。
最主要的危險操作是下面這三種:
1. jmap -dump
這個命令執行,JVM會將整個heap的信息dump寫入到一個文件,heap如果比較大的話,就會導致這個過程比較耗時,並且執行的過程中為了保證dump的信息是可靠的,所以會暫停應用。
2. jmap -permstat
這個命令執行,JVM會去統計perm區的狀況,這整個過程也會比較的耗時,並且同樣也會暫停應用。
3. jmap -histo:live
這個命令執行,JVM會先觸發gc,然後再統計信息。
上面的這三個操作都將對應用的執行產生影響,所以建議如果不是很有必要的話,不要去執行。
閱讀更多 小豬漫跑 的文章