Java 堆空间不足

Java 堆空间不足,java,scala,jvm,heap-memory,Java,Scala,Jvm,Heap Memory,我有一个堆空间问题。我的程序很简单。有两个参与者(发送和接收)“发送”参与者每秒向“接收”传递10000个对象,而“接收”将发布这些对象。接收到的对象正在保存在容器中,但容器每秒都会清空。所以容器不可能没有空间了。现在,在420000个对象之后,我的eclipse出现了一个错误,即“ioconsole更新程序遇到了问题”。当我进入细节时,我看到了错误内部错误::Java堆空间 我已尝试增加堆大小。 我的堆大小是8096m,maxpermsize是4096 我正在使用visualVm监控我的代码,

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

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

我正在使用visualVm监控我的代码,我注意到它没有超过堆大小atall。至于如何解决这个问题,完全是一片空白


有人能告诉我还有哪些可能导致此类错误的情况吗。

IOConsole是一个eclipse类,而不是您程序的。你经常打印到系统上吗?在“窗口>首选项”下搜索“控制台”。为所有控制台缓冲区设置某种限制。尝试从程序中打印较少的输出。可以改为登录到文件。

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

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

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

解决方案:

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


限制控制台。

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

是的,我无法找到printf行,因为它是由lagback.xml文件完成的。随着该文件中状态的更改,日志行减少,错误也减少。谢谢。。