2016-11-27 61 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