重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
MAT:Memory Analyzer Tool
创新互联公司专注于企业成都全网营销、网站重做改版、天河网站定制设计、自适应品牌网站建设、HTML5建站、商城网站开发、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为天河等各大城市提供网站开发制作服务。是一个快速并且功能强大的 java heap 分析器,能分析查找内存泄漏等问题
获取内存快照存储的dump文件,就可以利用它来分析
下载地址:http://www.eclipse.org/mat/downloads.php
基本概念:
Shallow Size:对象自身占用的内存大小
Retained Size:当前对象大小+它直接/间接引用到的对象大小,两者之和
通过MAT分析由于代码原因造成的内存泄漏:
-----获取内存快照(.hprof文件):
方法1:在tomcat/bin/catalina.sh中设置,以便jvm崩溃的时候会打印出堆信息:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=path_address
方法2:使用命令jps、jmap获取内存快照
jps -m -l 列出JVM中运行的进程状态信息(获取某个进程的pid, 供后续命令使用)
jmap -dump:format=b,file=xxx.hprof pid 把进程内存使用情况dump到文件中
方法3:利用jvisualVM
-----使用MAT工具分析:
新建一个文件夹(因为分析的时候会产生很多临时文件),把要分析的.hprof文件放进来
打开MAT,选择要分析的.hprof文件
分析的时候,根据MAT给出的提示一步步进行即可
注意事项:
因为内存快照是某一瞬间的,所以可能需要多捕获几次,多次分析,才能发现问题
分析以后会生成一个压缩包,如果看不懂的话,可以直接给开发人员进行分析