2012-06-12 48 views
13

我遇到了堆空間問題。我的程序很簡單。有兩個演員(發送&接收)「發送」演員每秒傳送10000個對象到「接收」,並接收發布這些對象。接收器接收的對象正被保存在容器中,但容器每秒都被清空。所以容器沒有足夠的空間用完了。現在420000對象後,我的日食鞋出現錯誤,說「ioconsole更新程序遇到問題」。當我進入細節我看到錯誤內部錯誤:: Java堆空間用盡堆空間

我已經嘗試增加堆大小。 我的堆大小是8096m和maxpermsize是4096

我監視我的代碼使用visualVm,​​我注意到它不超過堆大小atall。完全空白如何解決問題。

有人可以讓我知道其他可能的情況會導致這樣的錯誤。

回答

35

IOConsole是一個eclipse類,不是你的程序的。你打印到System.out很多嗎?在窗口>首選項搜索「控制檯」。爲所有控制檯緩衝區設置某種限制。嘗試從程序打印較少的輸出。也許登錄到一個文件。

+0

是的,我無法找到printf行,因爲它是由lagback.xml文件完成的。由於改變了該文件中的狀態,日誌行減少了,錯誤減少了。非常感謝.. – Rags

+0

取消選中'固定寬度控制檯'解決了我的... – KillBill

5

您可以添加以下JVM參數傳遞給給你的內存使用的一個想法,什麼GC是這樣做的:

-Xloggc:/tmp/gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps 
3

這個問題是由於控制檯緩衝區大小發生。

解決方案:

右鍵點擊控制檯 - >首選項

限制控制檯。

0

我遇到了這個問題,我試圖通過更改eclipse中的堆和緩衝區設置來解決它。但我無法解決它。然後我注意到我的程序中有內存泄漏,並且線程數量增加。問題解決後,我已經修復了錯誤。我認爲內存泄漏並不是最可能的原因,但應該考慮。

相關問題