学习jvm,关于MAT an internal error occurred during:Parsing heap dump from问题
寫了一個(gè)死循環(huán)不斷的創(chuàng)建對(duì)象,模擬內(nèi)存溢出
1 package com.zuo.test1; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 public class Main { 7 8 public static void main(String[] args) { 9 List<Demo> demos=new ArrayList<>(); 10 while(true){ 11 demos.add(new Demo()); 12 } 13 } 14 15 16 }?
修改啟動(dòng)參數(shù)。?
Apply
?
運(yùn)行。
出現(xiàn)堆溢出錯(cuò)誤,這時(shí)就會(huì)在本項(xiàng)目下出現(xiàn)xxx.hprof
?
然后再使用MAT工具引入此文件。進(jìn)行分析。
通過MAT發(fā)現(xiàn)heap dump問題所在,就需要尋找導(dǎo)致內(nèi)存泄漏的代碼點(diǎn)。這時(shí)往往需要打開對(duì)象依賴關(guān)系樹形視圖,點(diǎn)擊如圖按鈕即可。?
?
?
?
為了更有效率的使用?MAT,我們可以配置一些環(huán)境參數(shù)。因?yàn)橥ǔ6?#xff0c;分析一個(gè)堆轉(zhuǎn)儲(chǔ)文件需要消耗很多的堆空間,為了保證分析的效率和性能,在有條件的情況下,我們會(huì)建議分配給?MAT?盡可能多的內(nèi)存資源。你可以采用如下兩種方式來分配內(nèi)存更多的內(nèi)存資源給?MAT。
一種是修改啟動(dòng)參數(shù)?MemoryAnalyzer.exe-vmargs -Xmx4g
另一種是編輯文件?MemoryAnalyzer.ini,在里面添加類似信息?-vmargs– Xmx4g。
說明:
1. MemoryAnalyzer.ini中的參數(shù)一般默認(rèn)為-vmargs– Xmx1024m,這就夠用了。假如你機(jī)器的內(nèi)存不大,改大該參數(shù)的值,會(huì)導(dǎo)致MemoryAnalyzer啟動(dòng)時(shí),報(bào)錯(cuò):Failed to create the Java Virtual Machine。
2.當(dāng)你導(dǎo)出的dump文件的大小大于你配置的1024m(說明1中,提到的配置:-vmargs– Xmx1024m),MAT輸出分析報(bào)告的時(shí)候,會(huì)報(bào)錯(cuò):An internal error occurred during: "Parsing heap dump from XXX”。適當(dāng)調(diào)大說明1中的參數(shù)即可。
?
轉(zhuǎn)載于:https://www.cnblogs.com/ZuoAndFutureGirl/p/9029419.html
總結(jié)
以上是生活随笔為你收集整理的学习jvm,关于MAT an internal error occurred during:Parsing heap dump from问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库-常见面试题汇总
- 下一篇: 微信 开发 图片 上传 阿里云 oss