天天看點

eclipse報錯GC overhead limit exceed,卡頓

在使用Eclipse的Build Project功能時,提示以下錯誤:

An internal error occurred during: “Build Project”. GC overhead limit exceeded

如圖:

eclipse報錯GC overhead limit exceed,卡頓

搜尋的一下,是屬于java.lang.OutOfMemoryError。

OOM大家都知道,就是JVM記憶體溢出了,那GC overhead limit exceed呢?

GC overhead limt exceed檢查是Hotspot VM

1.6定義的一個政策,通過統計GC時間來預測是否要OOM了,提前抛出異常,防止OOM發生。Sun

官方對此的定義是:“并行/并發回收器在GC回收時間過長時會抛出OutOfMemroyError。過長的定義是,超過98%的時間用來做GC并且回收

了不到2%的堆記憶體。用來避免記憶體過小造成應用不能正常工作。“

聽起來沒啥用…預測OOM有啥用?起初開來這玩意隻能用來Catch住釋放記憶體資源,避免應用挂掉。後來發現一般情況下這個政策不能拯救你的應用,但是可以在應用挂掉之前做最後的掙紮,比如資料儲存或者儲存現場(Heap Dump)。

而且有些時候這個政策還會帶來問題,比如加載某個大的記憶體資料時頻繁OOM。

**用于了一兩年了,今天突然遇到這個問題,也許是以前沒留意。

其實如果不是很頻繁的出現,也不需要留意它,直接點OK就好了。**

之後會彈出提示如下:

eclipse報錯GC overhead limit exceed,卡頓

如果擔心還有沒儲存的修改,就點No,檢查完畢後重新開機一下Eclipse。

解決方法:

原因是Eclipse預設配置記憶體太小需要更改Eclipse安裝檔案夾下的eclipse.ini檔案。

Eclipse.ini預設檔案如下:

修改如下:

-Xms512m -Xmx1024m

第一個是最小的初始化記憶體,第二個是最大的占有記憶體

還可以加上 -XX:MaxPermSize=1024m這個意思是在編譯檔案時一直占有最大記憶體,重新開機Eclipse

繼續閱讀