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

Tao Mao tao.mao at oracle.com
Fri May 17 18:05:26 UTC 2013


new webrev:
http://cr.openjdk.java.net/~tamao/7186737/webrev.03/

changeset:
(1) card tables
$ jdk1.8.0_b74_macosx/bin/java -tamao -XX:+UseParallelGC -Xmx123t -version
Error occurred during initialization of VM
Unable to allocate 1031798784KB card tables for parallel garbage 
collection for the requested 132070244352KB heap.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

(2) bitmaps
$ jdk1.8.0_b74_macosx/bin/java -tamao -XX:+UseParallelGC -Xmx126t -version
Error occurred during initialization of VM
Unable to allocate 4227858432KB bitmaps for parallel garbage collection 
for the requested 135291469824KB heap.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

Thanks.
Tao

On 5/16/13 11:26 AM, Tao Mao wrote:
> Hi all,
>
> Thank you for review.
>
> Per the offline discussion with Jon, I have adopted "printing the 
> bytes in kilo"
>
> New webrev:
> http://cr.openjdk.java.net/~tamao/7186737/webrev.02/
>
> Changeset:
>
> (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 1031798784K byte tables for parallel garbage 
> collection for the requested 132070244352K 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 4227858432K byte bitmap for parallel garbage 
> collection for the requested 135291469824K byte heap size.
> Error: Could not create the Java Virtual Machine.
> Error: A fatal exception has occurred. Program will exit.
>
>
> Thanks.
> Tao
>
> On 5/16/13 8:10 AM, Stefan Karlsson wrote:
>> 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