解決eclipse報PermGen space異常的問題


開發中遇到Eclipse報錯:java.lang.OutOfMemoryError: PermGen space。

PermGen space百度翻譯為:永久區域內存不足

 

1. 先來一張jvm結構圖:

內存不足問題一般都是發生在''上,GC作用區域也是在''上。

 

2. 這個''又划分成了好幾塊區域,包括:

  新生代:包括伊甸園區和存活區。

  老年代

  永久帶:jdk1.8后變成元空間,元空間不再占用堆中的空間,而永久帶卻是在堆中開辟空間。

 

 

可以發現,中就有個永久區。永久區的內存溢出,其實就是堆的內存不夠用。

只需要調大的內存大小就可以解決問題。

 

3. 調整堆大小的參數:

  -Xms256m -Xmx1024m

  -Xms:堆的初始化大小,這里設置成了256m.

  -Xmx:堆最大的大小,這個設置成了1024m.

  這里面就存在了一個可伸縮的空間,而這個空間的存在會損耗服務的性能。因為擴容和釋放空間都是有性能損耗的。

  最好的辦法就是:-Xms和-Xmx設置成同樣的大小。這樣就不存在可伸縮的空間了。

 

4. jvm參數的配置位置。

  a. 如果是使用tomcat服務:

    修改tomcat/bin目錄下的catalina.bat。(windows環境下修改文件catalina.bat, linux環境下修改文件catalina.sh)

    

     配置在文件的第一行: 

 

   b.如果是eclipse

    修改eclipse的Run Configurations。(如果是debug模式,修改Debug Configurations。)

    

    寫在此處,方便拷貝:

    -Xms256m -Xmx1024m -XX:MaxNewSize=512m -XX:MaxPermSize=512m

    

 

  c.如果已經被配置成了服務

    這種情況,就需要修改注冊表了。

    c1. regedit命令打開注冊表。

    c2. 找到配置的tomcat服務。

    

    修改:JvmMs,JvmMx,Options里面的參數值。

    c3. 修改完畢后需要重啟服務。

 

  d. Eclipse的配置文件eclipse.ini中也可以配置jvm參數。

     

-vmargs
-Xms512m
-Xmx1024m
-XX:PermSize=256M -XX:MaxPermSize=512M

 

 至此,內存溢出的問題應該就解決了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM