1、下载visualvm,用于内存分析,下载地址:https://visualvm.github.io/download.html
![](https://img.haomeiwen.com/i6259437/730a42c0a9336a69.png)
2、安装好启动后在Tool栏中选择Plugins,安装Visual GC插件。
![](https://img.haomeiwen.com/i6259437/4ffe46612bee0171.png)
![](https://img.haomeiwen.com/i6259437/2a4a91a86fea1002.png)
3、在IDEA的Edit Configurations中的VM一栏配置如下方案:
-Xms16m -Xmx128m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=C:\IdeaProject\hprof\jvmtest.hprof
![](https://img.haomeiwen.com/i6259437/374d108392333c0d.png)
将虚拟机内存设置小是因为好让内存溢出更快的产生。
7、打开visualvm,选择启动的项目查看内存状况,我这里是内存溢出修复后的,有内存溢出时蓝色线会与黄色线逐渐持平,此处会抛出内存溢出异常。
![](https://img.haomeiwen.com/i6259437/f06adefdd4f149e7.png)
发生内存溢出后,通过visualvm>File>Load,加载在程序产生的.hprof文件,并进行如下图操作。
选择Objects
![](https://img.haomeiwen.com/i6259437/496227de9619563f.png)
内存溢出一般发生在自己写的代码和第三方库,先找到可能会产生内存溢出的类,比如一直打开和关闭某个界面时发生内存溢出,肯定是该界面中代码导致的,比如下面ArticleProcessingPlantRichText类,有29个实例,一直没被销毁,选择其中一个实例,点击references,查看被谁持有,然后在对应代码做检查,修改后再次启动项目测试。(需要注意的是,修改后再次启动时需要把visualvm关闭,不然之前的.hprof被visualvm占用后无法产生新的*.hprof文件!)
![](https://img.haomeiwen.com/i6259437/4adc4728838cd673.png)
网友评论