程序出現: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