20

我遇到了堆空间问题。我的程序很简单。有两个演员(发送和接收)“发送”演员每秒传递 10000 个对象以“接收”,并接收发布这些对象。接收者收到的对象被保存在容器中,但容器每秒都被清空。所以容器不可能空间不足。现在,在 420000 个对象之后,我的 eclipse 鞋出现错误,提示“ ioconsole 更新程序遇到问题”。当我进入细节时,我看到错误内部错误::Java堆空间

我试过增加堆大小。我的堆大小是 8096m,maxpermsize 是 4096

我正在使用 visualVm 监视我的代码,我注意到它根本没有超过堆大小。如何解决问题完全空白。

有人可以让我知道还有哪些其他可能的情况会导致此类错误。

4

4 回答 4

45

IOConsole 是一个 Eclipse 类,而不是你的程序。您是否经常打印到 System.out?在窗口 > 首选项下搜索“控制台”。为所有控制台缓冲区设置某种限制。尝试从程序中打印更少的输出。也许改为登录到文件。

于 2012-06-12T17:00:42.740 回答
8

由于控制台中的缓冲区大小而出现此问题。

解决方案 :

右键单击控制台 -> 首选项

限制控制台。

于 2015-02-06T05:04:18.100 回答
5

您可以添加以下 JVM 参数,让您了解内存使用情况和 GC 正在做什么:

-Xloggc:/tmp/gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
于 2012-06-12T17:20:21.140 回答
0

我遇到了这个问题,我试图通过在 Eclipse 中更改堆和缓冲区设置来解决它。但是我无法解决它。然后我注意到我的程序中存在内存泄漏,并且线程数随时间增加。在我修复了这个错误之后,问题就解决了。我认为内存泄漏不是最可能的原因,但应该考虑。

于 2015-09-07T16:06:45.757 回答