1. 程式人生 > >Eclipse 中設定JVM 記憶體

Eclipse 中設定JVM 記憶體

Eclipse 中設定JVM 記憶體

今天在eclipse 中測試把文件轉換為圖片的時候,報出了下面的錯誤:

Java.lang.OutOfMemoryError: Java heap space

    從上邊的異常資訊可以看到,JVM 需要使用的記憶體已經超過了我們分配給虛擬機器可以使用的最大記憶體。所以問題就轉化為如何設定eclipse 中jvm 的最大記憶體。

一、    嘗試修改Eclipse.ini 檔案 (此方法不行)

找到eclipse 目錄下的eclipse.ini 檔案,修改下面的內容:

-Xms40m

-Xmx512m

修改後重啟eclipse ,發現根本不起作用。經過後來查閱一些資料,原來這裡設定的最小記憶體和最大記憶體是不是給JVM 使用的,這個記憶體值包含了eclipse 自身使用的記憶體。

二、    修改jdk 使用記憶體(此方法可行)

找到eclispe 中window->preferences->Java->Installed JRE ,點選右側的Edit 按鈕,在編輯介面中的 “Default VM Arguments ”選項中,填入如下值即可。

-Xms64m -Xmx128m

三、    修改Run Configurations (方法可行)

在程式碼上右鍵,依次點選“Run As ”-> “Run Configurations ”,在Arguments 引數中的“VM arguments: ”中填入如下值即可。

-Xms64m -Xmx128m

四、    查詢當前JVM 記憶體程式碼

下面是查詢當前JVM 記憶體大小的程式碼,可以測試以上設定後JVM 的記憶體是否會變化。增加JVM 記憶體的配置項後,無需重新啟動eclipse 。具體的程式碼如下:

public class TestMemory {

/**

 * @param args

 */

public static void main(String[] args) {

       System. out .println( " 記憶體資訊 :" toMemoryInfo());

    }

/**

 * 獲取當前 jvm 的記憶體資訊

 *

 * @return

 */

public static String toMemoryInfo() {

       Runtime currRuntime = Runtime.getRuntime ();

int nFreeMemory = ( int ) (currRuntime.freeMemory() / 1024 / 1024);

int nTotalMemory = ( int ) (currRuntime.totalMemory() / 1024 / 1024);

return nFreeMemory + "M/" + nTotalMemory +"M(free/total)" ;

    }

}