【问题标题】:java process hangs, jvisualvm shows the process is using the all of the heap spacejava 进程挂起,jvisualvm 显示进程正在使用所有堆空间
【发布时间】:2017-04-11 05:21:40
【问题描述】:

我的 java 进程挂起。它读取输入数据并将其解析为 Integer[] 并将它们写入磁盘。

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

当内存容量不足时,java 进程死亡并显示 OutOfMemory 错误消息。

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

【问题讨论】:

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

标签: java heap-memory


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-04-12
    • 1970-01-01
    • 2016-01-21
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    相关资源
    最近更新 更多