eclipse 下調試和運行,每每會出現調整java.lang.OutOfMemoryError: Java heap space
產生的緣由我猜想是使用了maven,subversion,mylar,wtp等插件,還有就是大文件,對象的操做致使,具體緣由還不肯定。
在網上找了找相關資料,找到了解決辦法:方法(1)操做後沒有起做用,不過能夠參考其中查看內存的技巧 .具體解決看方法(2),(3)
一 、在eclipse根目錄,找到eclipse.ini,在其中指定初始heap
size和最大heap size:
-xms 64M
-xmx
256M
其中, -xms是初始heap size, -xmx 是最大heap
size。
在實際使用過程當中,我發現我一啓動eclipse時,heap
size使用大概是40m,多時能夠達到128m,因此個人設置是
-xms
64m
-xmx 128m
對於permgen space:
在eclipse.ini中指定參數:
-permsize
256m
-maxpermsize
784m java
二 、修改jdk 使用內存(此方法可行) tomcat
找到eclispe 中window->preferences->Java->Installed JRE ,點擊右側的Edit
按鈕,在編輯界面中的 「Default VM Arguments 」選項中,填入以下值便可。 eclipse
-Xms64m -Xmx128m maven
3、 修改Run Configurations (此方法可行) 測試
在代碼上右鍵,依次點擊「Run As 」-> 「Run Configurations 」,在Arguments 參數中的「VM arguments:
」中填入以下值便可。 ui
-Xms64m -Xmx128m spa
4、 查詢當前JVM 內存代碼 插件
下面是查詢當前JVM 內存大小的代碼,能夠測試以上設置後JVM 的內存是否會變化。增長JVM 內存的配置項後,無需從新啓動eclipse
。具體的代碼以下: debug
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)" ;
}
}
也能夠把工程發佈成war包部署到存在管理控制檯host-manager的tomcat下.進入控制檯選擇status查看內存的使用狀況.
設置好了,實際運行的結果能夠經過Eclipse中「Help」-「About Eclipse SDK」窗口裏面的「Configuration Details」按鈕進行查看。還有一個辦法能夠在eclipse中看到當前heap size的分配和使用狀況,還能夠強制執行垃圾回收。 在eclipse的快捷方式上點擊右鍵,在目標欄添加參數: -debug options -vm javaw.exe 而後,在eclipse根目錄下,新建一個名爲options的文件,不要後綴名。在該文件中加入內容: org.eclipse.ui/perf/showHeapStatus=true 重啓eclipse,就能夠在eclipse的左下角看到當前heap size的使用狀況和分配狀況了,還能夠手工執行垃圾回收,看heap size不夠時就來一次。