利用MemoryAnalyzer进行OutOfMemoryError的诊断分析

本文介绍了如何使用MemoryAnalyzer工具对JVM堆内存进行分析,特别是在出现OutOfMemoryError时如何dump堆内存并进行诊断。通过设置JVM启动参数,触发HeapDumpOnOutOfMemoryError,然后使用MemoryAnalyzer导入heap文件进行可疑内存泄漏分析,帮助定位导致内存溢出的代码段。
摘要由CSDN通过智能技术生成

        这篇帖子只介绍利用MemoryAnalyzer进行简单的JVM的堆的分析,至于JVM的内部结构是怎么样的,这里不进行分析。好吧,废话不多说;首先如果我们要分析JVM某个时刻的Heap的对象分配情况,我们就必须要dump这个时刻的JVM的heap(堆);有以下几个办法进行dump某个时刻JVM的heap内容:

         1、 使用$JAVA_HOME/bin/jmap -dump来触发, 
                eg:jmap-dump:format=b,file=/home/longhao/heamdump.out <pid>
         2、 使用$JAVA_HOME/bin/jcosole中的MBean,到MBean>com.sun.management>HotSpotDiagnostic>操作>dumpHeap中,点击 dumpHeap按钮。生成的dump文件在   java应用的根目录下面。
         3、在应用启动时配置相关的参数 -XX:+HeapDumpOnOutOfMemoryError,当应用抛出OutOfMemoryError时生成dump文件。
         4、使用hprof。启动虚拟机加入-Xrunhprof:head=site,会生成java.hprof.txt文件。该配置会导致jvm运行非常的慢,不适合生产环境。

利用MemoryAnalyzer进行Heap分析
        去eclipse官网上去下载MemoryAnalyzer,可以下载非插件版的,这样MemoryAnalyzer运行起来比较快,如果是eclipse插件版进行可能会导致eclipse卡死。本人下载的版本是MemoryAnalyzer-1.2.0.20120

Memory Analyzer(MAT)是一款功能强大的Java堆内存分析器,可以用于查找内存泄露以及查看内存消耗情况。MAT基于Eclipse开发,是一款免费的性能分析工具。 要使用Memory Analyzer进行分析,首先需要下载Memory Analyzer工具,并生成Hrof文件。然后使用Memory Analyzer打开转换后的文件,开始排查内存问题。可以通过包名查看使用情况,查看内存占比,查看线程使用情况,使用数据库方式搜索类名等方法来定位问题。 另外,我们在配置JVM参数时可以加上-XX:HeapDumpOnOutOfMemoryError,这样当项目发生OutOfMemoryError内存溢出时,会保存堆快照,方便后续分析。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Java+内存分析工具+MAT](https://download.csdn.net/download/qq_28165595/88232759)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Memory Analyzer基本使用](https://blog.csdn.net/OldApple_MrZ/article/details/102647599)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [使用Memory Analyzer分析内存溢出问题(分析hprof文件)](https://blog.csdn.net/qq_21187515/article/details/117447080)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值