日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用jmap和MAT等工具查看JVM运行时堆内存

發布時間:2025/7/25 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用jmap和MAT等工具查看JVM运行时堆内存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

jmap

JDK自帶了一些工具可以幫助我們查看JVM運行的堆內存情況,常用的是jmap命令

?

如果想學習Java工程化、高性能及分布式、深入淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java高級交流:854630135,群里有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給大家。

jmap -heap <pid> 打印堆的使用情況

?

那么,從這個輸出中我們也可以大致看出堆的結構,分為Young Generation (年輕代) 和 Old Generation (老年代)

Young Generation又被劃分為:Eden Space , From Space 和 To Space

可以看到這里To區是干凈的,還未被使用,From區已經使用了95%了

jmap -histo[:live] <pid> 打印類的實例數量、占用的內存、類的名稱,通常我們并不需要看所有的,只需要看前幾條即可

?

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

以hprof二進制格式dump堆的使用情況(PS:相當于生成一個快照,后續我們可以對這個快照文件進行分析)

?

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工程化、高性能及分布式、深入淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java高級交流:854630135,群里有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給大家。

?

由于這里是隨便運行的一個工程,并沒有出現內存泄漏之類的問題,所以這里看到的都是一些基礎的java類

查看引用

?

Dominator Tree?可以看到biggest object以及它們所占內存的比例

?

我們一級一級的找,可以找到源文件,然后分析代碼,最終定位到問題之根源

jconsole

可以查看本地的進程,也可以查看遠程主機上的進程

?

例如:jconsole 192.168.102.16:9105

?

?

或者本地

?

其它

?

如果想學習Java工程化、高性能及分布式、深入淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java高級交流:854630135,群里有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給大家。

轉載于:https://my.oschina.net/u/3990817/blog/3007026

總結

以上是生活随笔為你收集整理的利用jmap和MAT等工具查看JVM运行时堆内存的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。