My java process hangs. It reads input data and parses it into Integer[] and write them into disks.
jvisualvm shows the process is fully using the heap space. (java.lang.Integer and java.lang.Integer[] use 77% and 22% of the heap space respecitvely)
AFAIK the java process dies showing OutOfMemory error messages when the memory capacity is not enough.
Why my process hangs there? How can I resolve this issue?
Advertisement
Answer
Assuming that you have a full heap dump, what you will want to do is calculate the fully retained sizes of your objects. This will tell you the full size of all instances of your class, including the other objects to which it’s holding a reference. Take the largest ones and start from there.