查看 JVM 內存的幾個工具,建議收藏!

jmap

JDK自帶了一些工具能夠幫助咱們查看JVM運行的堆內存狀況,經常使用的是jmap命令php

打印堆的使用狀況:html

jmap -heap <pid>java

那麼,從這個輸出中咱們也能夠大體看出堆的結構,分爲Young Generation (年輕代) 和 Old Generation (老年代)spring

Young Generation又被劃分爲:Eden Space , From Space 和 To Spaceintellij-idea

能夠看到這裏To區是乾淨的,還未被使用,From區已經使用了95%了 eclipse

打印類的實例數量、佔用的內存、類的名稱,一般咱們並不須要看全部的,只須要看前幾條便可:ide

jmap -histo[:live] <pid> spring-boot

以hprof二進制格式dump堆的使用狀況(PS:至關於生成一個快照,後續咱們能夠對這個快照文件進行分析):工具

jmap -dump:live,format=b,file=heap.bin <pid>  性能

另外,關注公衆號Java技術棧,在後臺回覆:JVM46,能夠獲取一份 46 頁的 JVM 教程,很是齊全。

Memory Analyzer (MAT)

文件dump下來之後,可使用Eclipse的MAT插件進行查看

若是平常開發用的是eclipse的話,能夠直接安裝這個插件,若是不是的話,這個插件也能夠獨立運行

https://www.eclipse.org/mat/

https://www.eclipse.org/mat/downloads.php

解壓以後雙擊MemoryAnalyzer.exe便可運行

打開剛纔的heap.bin文件

能夠看到下面有三個選項卡,包括能夠執行的操做和報表

先看第一個Histogram

因爲這裏是隨便運行的一個工程,並無出現內存泄漏之類的問題,因此這裏看到的都是一些基礎的java類

查看引用

Dominator Tree 能夠看到biggest object以及它們所佔內存的比例

咱們一級一級的找,能夠找到源文件,而後分析代碼,最終定位到問題之根源

jconsole

能夠查看本地的進程,也能夠查看遠程主機上的進程

例如:jconsole 192.168.102.16:9105

或者本地

其它

參考:

http://www.javashuo.com/article/p-tmglxyhr-bv.html
https://www.cnblogs.com/kongzhongqijing/articles/3621163.html
http://www.javashuo.com/article/p-qfqfnmpy-cz.html
https://blog.csdn.net/u011512180/article/details/51874097

做者:廢物大師兄
來源:www.cnblogs.com/cjsblog/p/9561375.html

近期熱文推薦:

1.Java 15 正式發佈, 14 個新特性,刷新你的認知!!

2.終於靠開源項目弄到 IntelliJ IDEA 激活碼了,真香!

3.我用 Java 8 寫了一段邏輯,同事直呼看不懂,你試試看。。

4.吊打 Tomcat ,Undertow 性能很炸!!

5.《Java開發手冊(嵩山版)》最新發布,速速下載!

以爲不錯,別忘了隨手點贊+轉發哦!

相關文章
相關標籤/搜索