I have X Mb of Free Heap: Why Cannot I Allocate an Object As Large As X Mb? (Doc ID 1565851.1)

Last updated on DECEMBER 05, 2016

Applies to:

Oracle JRockit - Version R27.5 and later
Information in this document applies to any platform.

Goal

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?
 

Solution

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms