前段時間做了一個項目,Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
出現這個錯誤,所以需要查找原因,所以就用到這個工具,安裝比較麻煩,貼出來和大家共享一下:
第一步:下載Eclipse MAT
下載地址:http://www.eclipse.org/mat/downloads.php
第二步:下載之後將壓縮包解壓,放置到Myeclipse 的\MyEclipse 9\dropins目錄下
解壓後會看見這些文件: 糾正下面一個錯別字不是"寫"是 "下"
第三步:按照下圖,A,B,C的順序進行對應的文件的創建
第四部:重啓Myeclipse,打開Window->Perferences,你會看見這個項目:
簡單的說一下使用(控制檯的)如果是tomcat或者是別的服務器需要你去查如何配置JVM參數:
以下是一個會導致java.lang.OutOfMemoryError: Java heap space的程序代碼:(very easy)
- package org.lx.test;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.Map;
- public class OutOfMemoryTest {
- public static void main(String[] args) {
- Map<Integer,Date> map=new HashMap<Integer, Date>();
- for (int i = 0; i < 600000000; i++) {
- map.put(i, new Date());
- }
- }
- }
首先在運行之前有一些參數需要設置:
然後就到了參數設置的頁面,按照A,B的順序設置參數:(-XX:+HeapDumpOnOutOfMemoryError)避免寫錯誤可以copy
運行錯誤的程序代碼會看見以下結果:
那麼這時候就生成了一個文件java_pid3708.hprof,這個文件 在你的項目的根目錄下(myeclipse10)
那麼接下來我們就打開這個文件進行分析如何打開見下圖:(選中剛剛在項目根目錄下生成的文件java_pid3708.hprof打開)
打開之後你會看見下圖就OK了:
至於這其中問題如何查找請參考以下連接:
以下文章已經說的非常詳細了: