1. 程式人生 > >MyEclipse記憶體溢位問題解決方法

MyEclipse記憶體溢位問題解決方法

往MyEclipse  Window/Preferences/MyEclipse……/Servers/Tomcat/ Tomcat 6.x/JDK

Optional Java VM arguments:

輸入:-Xms256m -Xmx512m -XX:MaxNewSize=128m -XX:MaxPermSize=256m

解釋:

(1)-Xms400m:初始實體記憶體值(堆記憶體)

(2)-Xmx400m:最大實體記憶體值(堆記憶體)

(3)-XX:MaxNewSize=1024m:最大New區域值(非堆記憶體)

(4)-XX:MaxPermSize=1024m:最大永久域的值(非堆記憶體)

需要掌握知識點:

1、java把記憶體分兩種:一種是棧記憶體,另一種是堆記憶體。

2、其預設空間(即-Xms)是實體記憶體的1/64,最大空間(-Xmx)是實體記憶體的1/4。如果記憶體剩餘不到40%,JVM就會增大堆到Xmx設定的值,記憶體剩餘超過70%,JVM就會減小堆到Xms設定的值。所以伺服器的Xmx和Xms設定一般應該設定相同避免每次GC後都要調整虛擬機器堆的大小。假設實體記憶體無限大,那麼JVM記憶體的最大值跟作業系統有關,一般32位機是1.5g到3g之間,而64位的就不會有限制了。

注意:如果Xms超過了Xmx值,或者堆最大值和非堆最大值的總和超過了實體記憶體或者作業系統的最大限制都會引起伺服器啟動不起來。

3、另一個是java記憶體堆不足時,會不斷呼叫GC,若連續回收都解決不了記憶體堆不足的問題時,就會報out of memory錯誤。

4、在函式中定義的基本型別變數和物件的引用變數都在函式的棧記憶體中分配。

5、堆記憶體用來存放由new建立的物件和陣列。

6、堆的優勢是可以動態分配記憶體大小,生存期也不必事先告訴編譯器,因為它是在執行時動態分配記憶體的。缺點就是要在執行時動態分配記憶體,存取速度較慢。

7、棧的優勢是存取速度比堆要快,缺點是存在棧中的資料大小與生存期必須是確定的無靈活性。

8、Heap Size 最大不要超過可用實體記憶體的80%,一般的要將-Xms和-Xmx選項設定為相同,而-Xmn為1/4的-Xmx值。

9、java堆分為三個區:New、Old和Permanent。

2016-6-19 匯入的專案工程,經過簡單的幾個步驟證實可以操作

1.配置tomcat7

2.配置jre

3.配置啟動引數 -Xms1024m -Xmx1024m -XX:MaxNewSize=1024m -XX:MaxPermSize=1024m

4.配置資料庫連線地址和庫名及賬戶密碼

5.執行即可。