eclipse內(nèi)存不足怎么辦呢?本節(jié)內(nèi)容中小編就為大家?guī)?lái)eclipse內(nèi)存不夠問(wèn)題解決方法,希望對(duì)大家有所幫助!
eclipse內(nèi)存不夠解決方法
問(wèn)題
Eclipse最近在做J2EE項(xiàng)目中 發(fā)現(xiàn)老是出現(xiàn)虛擬內(nèi)存不足的提示前2天去加了根內(nèi)存,問(wèn)題同樣存在,為了讓我在寫(xiě)代碼時(shí) 不在出現(xiàn)那討厭的內(nèi)存不足的提示,也為了不讓那破機(jī)器再卡住,今天找到了解決方法,試過(guò)后好象確實(shí)沒(méi)出內(nèi)存不足的提示了
提示大概如下:
MyEclipse has detected that less than 5% of the 64MB of PermGen (Non-heap memory) space remains. It is strongly recommendedthat you exit and restart MyEclipse with new virtual machine memoryparamters to increase this memory. Failure to do so can result indata loss. The recommended Eclipse memory parameters are:
eclipse.exe -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M解決方法:
找到Eclipse安裝文件下的eclipse.ini配置文件
通常里面都是寫(xiě)的-vmargs-Xms40m-Xmx256m
-vmargs:說(shuō)明后面是VM的參數(shù)
-Xms40m:虛擬機(jī)占用系統(tǒng)的最小內(nèi)存
Xmx256m:虛擬機(jī)占用系統(tǒng)的最大內(nèi)存
-XX:PermSize:最小堆大小.一般報(bào)內(nèi)存不足時(shí),都是說(shuō)這個(gè)太小,堆空間剩余小于5%就會(huì)警告,建議把這個(gè)稍微設(shè)大一點(diǎn),不過(guò)要視自己機(jī)器內(nèi)存大小來(lái)設(shè)置-XX:PermSize:最大堆大小.這個(gè)也適當(dāng)大些,另外把里面的參數(shù)改為:
-vmargs
-Xms128M
-Xmx512M
-XX:PermSize=128M
-XX:MaxPermSize=256M
1、設(shè)置Eclipse內(nèi)存使用情況
修改eclipse根目錄下的eclipse.ini文件
-vmargs //虛擬機(jī)設(shè)置
-Xms40m
-Xmx256m
-XX:PermSize=128M //非堆內(nèi)存設(shè)置
-XX:MaxPermSize=256M
2、JVM內(nèi)存設(shè)置
打開(kāi)eclipse window-preferences-Java -Installed JREs -Edit -Default VM Arguments 在VM自變量中輸入:-Xmx128m -Xms64m -Xmn32m -Xss16m3, Tomcat內(nèi)存設(shè)置
打開(kāi)Tomcat根目錄下的bin文件夾,編輯catalina.bat 修改為:set JAVA_OPTS= -Xms256m -Xmx512m下面是這幾個(gè)設(shè)置的一些背景知識(shí):
1 堆(Heap)和非堆(Non- heap)內(nèi)存
按照官方的說(shuō)法:“Java 虛擬機(jī)具有一個(gè)堆,堆是運(yùn)行時(shí)數(shù)據(jù)區(qū)域,所有類(lèi)實(shí)例和數(shù)組的內(nèi)存均從此處分配。堆是在 Java 虛擬機(jī)啟動(dòng)時(shí)創(chuàng)建的!薄霸贘VM中堆之外的內(nèi)存稱(chēng)為非堆內(nèi)存(Non-heap memory)”。可以看出JVM主要管理兩種類(lèi)型的內(nèi)存:堆和非堆。簡(jiǎn)單來(lái)說(shuō)堆就是Java代碼可及的內(nèi)存,是留給開(kāi)發(fā)人員使用的;非堆就是JVM留給 自己用的,所以方法區(qū)、JVM內(nèi)部處理或優(yōu)化所需的內(nèi)存(如JIT編譯后的代碼緩存)、每個(gè)類(lèi)結(jié)構(gòu)(如運(yùn)行時(shí)常數(shù)池、字段和方法數(shù)據(jù))以及方法和構(gòu)造方法 的代碼都在非堆內(nèi)存中。 2 堆內(nèi)存分配
JVM初始分配的內(nèi)存由-Xms指定,默認(rèn)是物理內(nèi)存的1/64;JVM最大分配的內(nèi)存由-Xmx指定,默認(rèn)是物理內(nèi)存的1/4。默認(rèn)空余堆內(nèi)存 小于 40%時(shí),JVM就會(huì)增大堆直到-Xmx的最大限制;空余堆內(nèi)存大于70%時(shí),JVM會(huì)減少堆直到-Xms的最小限制。因此服務(wù)器一般設(shè)置-Xms、 -Xmx相等以避免在每次GC 后調(diào)整堆的大小。
3、非堆內(nèi)存分配
JVM使用-XX:PermSize設(shè)置非堆內(nèi)存初始值,默認(rèn)是物理內(nèi)存的1/64;由XX:MaxPermSize設(shè)置最大非堆內(nèi)存的大小,默認(rèn)是物理內(nèi)存的1/4。
4、JVM內(nèi)存限制(最大值)
首先JVM內(nèi)存首先受限于實(shí)際的最大物理內(nèi)存,假設(shè)物理內(nèi)存無(wú)限大的話,JVM內(nèi)存的最大值跟操作系統(tǒng)有很大的關(guān)系。簡(jiǎn)單的說(shuō)就32位處理器雖然 可控內(nèi)存空間有4GB,但是具體的操作系統(tǒng)會(huì)給一個(gè)限制,這個(gè)限制一般是2GB-3GB(一般來(lái)說(shuō)Windows系統(tǒng)下為1.5G-2G,Linux系統(tǒng) 下為 2G-3G),而64bit以上的處理器就不會(huì)有限制了
eclipse內(nèi)存不夠解決方法小編就為大家介紹到這里了,希望對(duì)大家有所幫助!