了很多努力,我似乎無法克服得到一個避免「GC開銷超限」錯誤
GC開銷限制的問題後,在我的Java程序超過
錯誤。
它的發生是含有大量字符串操作,對象名單,數量和訪問DB一個大方法中。 我曾嘗試以下:
-
使用每個的ArrayList後
- ,我已經加入:列表=新的ArrayList <>();列表= NULL;
- 對於琴絃,而不是具有例如。 50次追加(STR + =「....」)我嘗試有一個附加每個DB訪問我關閉語句和結果集後總文本
- 。
此方法是從主叫這樣的:
for(int i=0; i<L; i++) {
cns = new Console(i);
cns.processData();//this is the method
cns=null;
}
當此循環被執行1次或2次,一切正常。對於L> = 3,我幾乎肯定會得到垃圾回收器錯誤。
不應該在每次執行該方法後都有一個cns = null的事實,強制執行GC並將所有內容從前一次執行中解放出來?
是否也應該將其設置爲null之前刪除對象的所有私有屬性?也許把一個Thread.sleep()可以在每個循環後強制GC?
也許你第三次運行佔用太多的內存。我會建議將你的大方法分成更小的方法。手動調用GC和Thread.spleep是一種錯誤的方法。 – Admit