eclipse自動編譯後,內存不足導致退出

今天Eclipse當我部署完項目後,保存後自動編譯,結果顯提示我內存不足,當我點擊確定後,繼續部署工作空間後,eclipse要求退出保存工作空間,我試了幾次,都是這個結果,我強制不退出後,每次保存都是有問題,看看部署狀態,Tomcat已經提示出現問題了,我猜到可能是JVM內存的問題,於是找到exlipse.ini,修改爲: 
-vmargs 
-Xms128M 
-Xmx512M 
-XX:PermSize=64M 
-XX:MaxPermSize=128M 

把了解的總結下: 
參數中-vmargs的意思是設置JVM參數,所以後面的其實都是JVM的參數了,我們首先了解一下JVM內存管理的機制,然後再解釋每個參數代表的含義。 
堆內存分配 
JVM初始分配的內存由-Xms指定,默認是物理內存的1/64;JVM最大分配的內存由-Xmx指定,默認是物理內存的1/4。默認空餘堆內存小於40%時,JVM就會增大堆直到-Xmx的最大限制;空餘堆內存大於70%時,JVM會減少堆直到-Xms的最小限制。因此服務器一般設置-Xms、-Xmx相等以避免在每次GC 後調整堆的大小。 
非堆內存分配 
JVM使用-XX:PermSize設置非堆內存初始值,默認是物理內存的1/64;由XX:MaxPermSize設置最大非堆內存的大小,默認是物理內存的1/4。 
堆內存和非堆內存,另外JVM最大內存首先取決於實際的物理內存和操作系統。設置VM參數導致程序無法啓動主要有以下幾種原因: 
1) 參數中-Xms的值大於-Xmx,或者-XX:PermSize的值大於-XX:MaxPermSize; 

2) -Xmx的值和-XX:MaxPermSize的總和超過了JVM內存的最大限制,比如當前操作系統最大內存限制,或者實際的物理內存等等。說到實際物理內存這裏需要說明一點的是,如果你的內存是1024MB,但實際系統中用到的並不可能是1024MB,因爲有一部分被硬件佔用了。 
參數寫入到eclipse.ini文件Eclipse沒有執行對應的設置? 
沒有遵守eclipse.ini文件的設置規則: 

參數形如“項 值”這種形式,中間有空格的需要換行書寫,如果值中有空格的需要用雙引號包括起來。比如我們使用-vm C:\Java\jre1.6.0\bin\javaw.exe參數設置虛擬機,在eclipse.ini文件中要寫成這樣: 

-vm 
C:\Java\jre1.6.0\bin\javaw.exe 

Eclipse壓縮包中自帶的eclipse.ini文件內容是這樣的: 

-showsplash 
org.eclipse.platform 
--launcher.XXMaxPermSize 
256m 
-vmargs 
-Xms40m 
-Xmx256m 
其中–launcher.XXMaxPermSize(注意最前面是兩個連接線)跟-XX:MaxPermSize參數的含義基本是一樣的,我覺得唯一的區別就是前者是eclipse.exe啓動的時候設置的參數,而後者是eclipse所使用的JVM中的參數。其實二者設置一個就可以了,所以這裏可以把–launcher.XXMaxPermSize和下一行使用#註釋掉。 
補充下啊,在Windows - Preferences --> General--> Startup and Shutdown 去掉不需要的插件,對於Eclipse啓動運行性能有幫助的 

如果都嘗試了,結果還是不可以,那就刪掉.metadata文件夾,重新部署Eclipse工作空間


轉載地址:http://handonghandong.iteye.com/blog/659524

發佈了21 篇原創文章 · 獲贊 19 · 訪問量 87萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章