Java內存分析工具MAT


MAT是一個強大的內存分析工具,可以快捷、有效地幫助我們找到內存泄露,減少內存消耗分析工具。 內存中堆的使用情況是應用性能監測的重點,而對於堆的快照,可以dump出來進一步分析,總的來說,一般我們對於堆dump快照有三種方式:
  • 添加啟動參數發生OOM時自動dump: java應用的啟動參數一般最好都加上-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=logs/heapdump.hprof,即在發生OOM時自動dump堆快照,但這種方式相當來說是滯后的(需要等到發生OOM后)。
  • 使用命令按需手動dump: 我們也可以使用jmap -dump:format=b,file=HeapDump.hprof <pid>工具手動進行堆dump和線程dump
  • 使用工具手動dump:jvisualvm有提供dump堆快照的功能,點擊一下即可。

使用MAT,可以輕松實現以下功能:

  • 找到最大的對象,因為MAT提供顯示合理的累積大小(retained size
  • 探索對象圖,包括inboundoutbound引用,即引用此對象的和此對象引出的。
  • 查找無法回收的對象,可以計算從垃圾收集器根到相關對象的路徑
  • 找到內存浪費,比如冗余的String對象,空集合對象等等。
之前使用arthas,可以診斷stack、thread、class、function的性能及調用分析, arthas依賴jdk,如果jre需要手工安裝jps、tools.jar等,但 arthas沒有整合jmap功能,沒有heap分析。
所以目前看來在線jvm診斷 arthas、jmap加上eclipse mat就可以覆蓋性能分析、heap分析的全部要求了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM