Request for review: 7186737: Unable to allocate bit map for parallel garbage collection for the requested heap

Stefan Karlsson stefan.karlsson at oracle.com
Thu May 16 15:10:38 UTC 2013


Hi Tao,

On 05/16/2013 02:01 AM, Tao Mao wrote:
> Hi all,
>
> new webrev:
> http://cr.openjdk.java.net/~tamao/7186737/webrev.01/

Thanks for doing this change. I think it's much better now.

I'm not sure about the wording of the messages, maybe Jon can review 
that part?

thanks,
StefanK

>
> changeset
> Print a more useful error message when allocation fails
>
> (1) Case 1 card tables
> Before:
> $ jdk1.8.0_b74_macosx/bin/java -server -Xmx123t -version
> Error occurred during initialization of VM
> Unable to allocate tables for parallel garbage collection for the 
> requested heap size.
> Error: Could not create the Java Virtual Machine.
> Error: A fatal exception has occurred. Program will exit.
>
> After:
> $ jdk1.8.0_b74_macosx/bin/java -tamao -Xmx123t -version
> Error occurred during initialization of VM
> Unable to allocate 1056561954816 byte tables for parallel garbage 
> collection for the requested 135239930216448 byte heap size.
> Error: Could not create the Java Virtual Machine.
> Error: A fatal exception has occurred. Program will exit.
>
> (2) Case 2 bit map
> Before:
> $ jdk1.8.0_b74_macosx/bin/java -server -Xmx126t -version
> Error occurred during initialization of VM
> Unable to allocate bit map for parallel garbage collection for the 
> requested heap size.
> Error: Could not create the Java Virtual Machine.
> Error: A fatal exception has occurred. Program will exit.
>
> After:
> $ jdk1.8.0_b74_macosx/bin/java -tamao -Xmx126t -version
> Error occurred during initialization of VM
> Unable to allocate 4329327034368 byte bitmap for parallel garbage 
> collection for the requested 138538465099776 byte heap size.
> Error: Could not create the Java Virtual Machine.
> Error: A fatal exception has occurred. Program will exit.
>
> Thanks.
> Tao
>
>
> On 5/10/13 11:02 AM, Jon Masamitsu wrote:
>> Tao,
>>
>> Sorry about my poor suggestion about the error message.
>> You wanted to print the size of the allocation that failed, right?
>> And as Stefan suggests you could get that size from the
>> MemRegion at the call to the initialize?
>>
>>   if (!_summary_data.initialize(mr)) {
>>
>> Jon
>>
>> On 5/10/2013 1:01 AM, Stefan Karlsson wrote:
>>> On 05/10/2013 12:16 AM, Tao Mao wrote:
>>>> Hi all,
>>>> Can I have one or two quick reviews?
>>>>
>>>> Thank you.
>>>> Tao
>>>>
>>>> 7186737: Unable to allocate bit map for parallel garbage collection 
>>>> for the requested heap
>>>> http://bugs.sun.com/view_bug.do?bug_id=7186737
>>>>
>>>> webrev:
>>>> http://cr.openjdk.java.net/~tamao/7186737/webrev.00/
>>>
>>> I don't think it's good to print this error messages directly to the 
>>> gclog_or_tty.
>>>
>>> I'd prefer if you could update the text in the 
>>> vm_shutdown_during_initialization calls.
>>>
>>> See: PSParallelCompact::initialize():
>>>
>>>   if (!_mark_bitmap.initialize(mr)) {
>>>     vm_shutdown_during_initialization("Unable to allocate bit map for "
>>>       "parallel garbage collection for the requested heap size.");
>>>     return false;
>>>   }
>>>
>>>   if (!_summary_data.initialize(mr)) {
>>>     vm_shutdown_during_initialization("Unable to allocate tables for "
>>>       "parallel garbage collection for the requested heap size.");
>>>     return false;
>>>   }
>>>
>>> It would also be good to log both the requested heap size and and 
>>> bitmap size. For the latter you'd have to extract the bitmap size 
>>> calculation out of ParMarkBitMap::initialize.
>>>
>>> thanks,
>>> StefanK
>>>
>>>>
>>>> changeset:
>>>> Print out how many bytes we try to allocate when the allocation 
>>>> fails. This would give us a better idea of memory bottleneck.
>>>>
>>>> test:
>>>> will run JPRT sanity for pushing.
>>>>
>>>>
>>>
>>




More information about the hotspot-gc-dev mailing list