1. 程式人生 > >工程執行時記憶體不足的問題

工程執行時記憶體不足的問題

在java執行時記憶體不足,一般是java虛擬機器的空間不足,工程執行有兩個地方的記憶體需要考慮,一個事tomcat記憶體,一個事eclipse的記憶體


1.

Tomcat直接啟動正常,通過myeclipse啟動tomcat記憶體溢位. MyEclipse啟動Tomcat無視catalina.bat中的記憶體設定。    則需要做如下設定即可解決:    MyEclipse --> Window --> Preference... -->MyEclipse --> Application Servers -->    Tomcat --> Tomcat 6.X --> JDK --> Optional Java VMarguments :進行設定    設定的內容:-Xms256m -Xmx512m
2.
編輯�TALINA_HOME%/bin下面的catalina.bat檔案,在最上面第一行前面寫上  set JAVA_OPTS=-Xms512m -Xmx1024m  其中-Xms表示jvm最小記憶體數,-Xmx表示最大記憶體數比如我這裡都設定成最小512,最大1024當然,這個最小最大並不是只能使用1024的意思,其實這個設定是對系統來設定的,因為這個jvm佔用記憶體數實際上是針對虛擬記憶體來說,這個設定表示,無論系統怎麼佔用虛擬記憶體,都要保證最小512M的虛擬記憶體共給jvm使用,當然,就算我jvm佔用再大,也不會超過1024,來威脅系統的記憶體使用


myeclipse下設定tomcat的記憶體

-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m


-Xms:表示jvm堆記憶體初始化大小

-Xmx:表示jvm堆記憶體可被分配的最大上限

-xx:MaxNewSize:表示新生代可被分配的記憶體的最大上限;當然這個值應該小於 -Xmx的值;

-XX:MaxPermSize:表示對非堆區域設定的最大值

-XX:PermSize:表示非堆區初始記憶體分配大小,其縮寫為permanent size(持久化記憶體)

但是開發過程中,通常會將 -Xms 與 -Xmx兩個引數的配置相同的值,其目的是為了能夠在java垃圾回收機制清理完堆區後不需要重新分隔計算堆區的大小而浪費資源。