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