1. 程式人生 > >JAVA記憶體溢位分析

JAVA記憶體溢位分析

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