JAVA記憶體溢位分析
阿新 • • 發佈:2019-10-11
1.本地測試程式
public class TestHeapSpace { private int index; public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } public static void main(String[] args) { List<TestHeapSpace> list=new ArrayList<TestHeapSpace>(); int index=0; while(true) { TestHeapSpace t=new TestHeapSpace(); t.setIndex(index++); list.add(t); } } }
2.eclipse調整記憶體引數
引數1是限制堆記憶體大小 引數2是溢位儲存堆檔案
-Xmx1m -XX:+HeapDumpOnOutOfMemoryError
3.執行程式執行後會生成一個字尾為hprof的檔案
4.下載工具 IBM heapAnalyzer
下載後是個jar包 檔名為ha456.jar
5.執行工具
java -jar ha456.jar
6.執行後
這裡只是個例子 第一個list佔記憶體最高的
7.tomcat 新增引數
在tomcat啟動引數中加入兩個引數
set JAVA_OPTS=-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/home/tomcat/domains/server