RFR (XS): JDK-8058967 metaspace/shrink_grow/CompressedClassSpaceSize fails with OOM: Compressed class space

Kim Barrett kim.barrett at oracle.com
Fri May 15 20:35:47 UTC 2015


On May 15, 2015, at 3:16 PM, Joseph Provino <joseph.provino at oracle.com> wrote:
> 
> On 5/15/2015 2:29 PM, Jon Masamitsu wrote:
>> I think the statement of the policy should be updated.
> 
> How does this sound?  Should the comment be with the "if" statement or
> where _small_chunk_limit is declared?
> 
>  /*
>   * The policy is to allocate up to _small_chunk_limit small chunks
>   * after which only medium chunks are allocated.  This is done to
>   * reduce fragmentation.  In some cases, this can result in a lot
>   * of small chunks being allocated to the point where it's not
>   * possible to expand.  If this happens, there may be no medium chunks
>   * available and  OOME would be thrown.  Instead of doing that,
>   * if the allocation request size fits in a small chunk, an attempt
>   * is made to allocate a small chunk.
>   */
>  if (next == NULL &&
>      word_size + Metachunk::overhead() <= small_chunk_size() &&
>      grow_chunks_by_words == medium_chunk_size()) {
>    /*
>     * There are no medium chunks available but a small chunk is big enough.
>     * See if a small chunk is available.
>     */
>    next = get_new_chunk(word_size, small_chunk_size());
>  }
> 

After further consideration and offline discussion, I'm ok with this
approach.  There are several open CRs to improve metaspace allocation,
some of which might render this change moot.  However, as a short term
fix for an intermittently failing test, this seems ok.

So the above version looks good to me.

https://bugs.openjdk.java.net/browse/JDK-8076476
Coalesce Metachunks in the Metaspaces

https://bugs.openjdk.java.net/browse/JDK-8035945 
Small Metaspace allocation requests can fail even though SmallChunks are available
This might be a duplicate of 8058967.



More information about the hotspot-gc-dev mailing list