Request for review: 7186737: Unable to allocate bit map for parallel garbage collection for the requested heap
Tao Mao
tao.mao at oracle.com
Thu May 16 18:26:06 UTC 2013
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