出現GC overhead limit exceeded 的解決方案


當我在使用MyEclispe IDE創建Maven項目的時候出現  "An internal error occurred during: “Build Project”. GC overhead limit exceeded",剛開始以為我clean一下,然后重啟MyEclipse就可以了,后來發現並不是這樣。既然出錯就要去尋找問題的根源,那么問題出在哪里呢?

        在解決這個問題的時候,我尋找了一些資料,發現GC overhead limt exceed檢查是Hotspot VM 1.6定義的一個策略,通過統計GC時間來預測是否要OOM了,提前拋出異常,防止OOM發生。Sun 官方對此的定義是:“並行/並發回收器在GC回收時間過長時會拋出OutOfMemroyError。過長的定義是,超過98%的時間用來做GC並且回收 了不到2%的堆內存。用來避免內存過小造成應用不能正常工作

        這時候就需要認真的去考慮了,既然是配置內存出了問題,那么就應該去到相應的配置文件下面去找,MyEclispe IDE的相關內存配置文件在myeclispe.ini,當然,在我們打開的時候就會清楚的看到下面的這一段代碼:

 

[html]  view plain  copy
 
  1. <span style="background-color: rgb(51, 255, 51);">#utf8 (do not remove)  
  2. -startup  
  3. plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar  
  4. --launcher.library  
  5. plugins/org.eclipse.equinox.launcher.i18n.win32.win32.x86_64_3.2.0.v201103301700  
  6. -vm  
  7. binary/com.sun.java.jdk7.win32.x86_64_1.7.0.u45/bin/javaw.exe  
  8. -install  
  9. D:\mytools\MyEclipse  
  10. -vmargs  
  11. -Xmx768m  
  12. -XX:MaxPermSize=320m  
  13. -XX:ReservedCodeCacheSize=64m  
  14. -Dosgi.nls.warnings=ignore</span>  

可以很清楚的看到有一段 -Xmx768m 的配置,它是作為最大占有內存,當出現剛剛的錯誤的時候說明當前已經超過這個設定值,所以我們可以將這個最大占有內存做下修改,調整為1024m,目前這個設定值已經足夠使用了,當然有的人會說將" -XX:MaxPermSize",同樣也設定為1024m或者更大的時候,但是我感覺沒必要,當我們在編譯文件的時候就讓它一直處在最大占有內存,往往會出現程序卡住的現象。所以一切還是要根據具體情況做具體分析以及解決,達到最佳的效果。


免責聲明!

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



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