2016-11-27 29 views
0

我的java进程挂起。它读取输入数据并将其解析为Integer []并将它们写入磁盘。java进程挂起,jvisualvm显示进程正在使用所有的堆空间

jvisualvm显示该进程正在充分利用堆空间。 (java.lang.Integer和java.lang.Integer []分别使用堆空间的77%和22%)

AFAIK java进程在内存容量不足时显示OutOfMemory错误消息。

为什么我的过程在那里挂起? 我该如何解决这个问题?

+0

如果你想获得一个回答你的问题尝试发布您的代码。没有代码,我只能建议你尝试增加堆大小: - Xmx选项。如果问题仍然存在,则应该看看如何释放资源:程序运行时是否真的需要所有Integer和Integer []? –

回答

0

假设你有一个完整的堆转储,你想要做的是计算完全保留的对象大小。这会告诉你你的类的所有实例的全部大小,包括它持有引用的其他对象。采取最大的,从那里开始。

Retained sizes in Visual VM