-Xms64m -Xmx128m
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 { public static void main(String[] args) { System. out .println( " 記憶體資訊 :" + toMemoryInfo()); } 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)" ; } } |