I have X Mb of Free Heap: Why Cannot I Allocate an Object As Large As X Mb?
Last updated on DECEMBER 05, 2016
Applies to:Oracle JRockit - Version R27.5 and later
Information in this document applies to any platform.
Question 1: Is it possible the compaction is not able to clear up enough space (whether because it does not have enough time or because it cannot move the objects) to create a large enough contiguous chunk of memory for a large allocation?
Question 2: Is there a way to verify this through the oomdiag or hprof? That is, is there a way to identify which objects where pinned and at what address, and see that they are spread out in such a manner that prevents a large chunk of memory to be allocated?
Question 3: Also, if this is our issue, is there a way to limit where pinned objects get allocated? Is it possible to keep them within a 20-25% block of the heap, so that the remaining heap can be compacted at will? If not, what other options do we have for avoiding these problems? Obviously trying to avoid massive objects would help, but is there anything else that can be done? Is there a setting to split large objects into smaller chunks (without much performance impact)? Or are we just stuck with hoping for the best?
Sign In with your My Oracle Support account
Don't have a My Oracle Support account? Click to get started
Million Knowledge Articles and hundreds of Community platforms