java OutOfMemoryError出現後的學習

程序出現:Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 所以學習了一下

使用的工具是Eclipse

其中選項意思:

-Xms20m 堆的最小值爲20m

-Xmx20m 堆的最大值爲20m   -Xms與-Xmx參數設置成一樣的則堆不可自動擴展

-XX:+HeapDumpOnOutOfMemoryError  可以讓虛擬機在出現內存溢出異常出現時Dump出當前的內存堆轉儲。

-XX:HeapDumpPath=D:/2014/file1.hprof  設置堆轉儲文件將要存儲的地方

//用於測試
List<TestObject> list=new ArrayList<TestObject>();
while(true){
list.add(new OOMObject());
}


溢出並生成了一個D:/AA/file1.hprof的文件

下面就要使用工具分析這個爲.hprof的文件從而百度看到了一個Eclipse Memory Analyzer(eclipse 插件)和Java VisualVM (功能很多什麼線程分析,內存快照,CPU快照等等 安裝目錄/bin jdk自帶的) 工具。

Eclipse Memory Analyzer(MAT)插件安裝以及使用參照:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-ma/index.html?ca=drs-

Java VisualVM的使用參照:http://www.ibm.com/developerworks/cn/java/j-lo-visualvm/

MAT 來分析 IBM JVM 生成的 dump 文件的話,還需要額外安裝 IBM Diagnostic Tool Framework

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章