RFR [8043476] java/util/BitSet/BSMethods.java failed with: java.lang.OutOfMemoryError: Java heap space
Ivan Gerasimov
ivan.gerasimov at oracle.com
Mon May 26 13:31:22 UTC 2014
Thank you Alan!
On 26.05.2014 16:31, Alan Bateman wrote:
> On 25/05/2014 07:43, Ivan Gerasimov wrote:
>> Hello!
>>
>> There was a bug in BitSet.toString() fixed with JDK-8040806.
>> Unfortunately, the test that had come with this change started to
>> fail with OOM.
>> This is because it needs to create a BitSet with the bit
>> Integer.MAX_VALUE set, so this BitSet occupies 256M.
>> In particular, the test fails on 32-bit platforms.
>>
>> The proposed fix for this is: First, run in othervm mode, so we're
>> sure that no other tests consume the heap space.
>> And second, explicitly check that VM is able to allocate enough memory.
>> Experiments showed that 380M seem to be the needed minimum, so I set
>> the boundary to 512M.
>>
>> I've checked the updated test with JPRT on all available platforms,
>> no failures.
>>
>> Would you please review the fix?
>>
>> BUGURL: https://bugs.openjdk.java.net/browse/JDK-8043476
>> WEBREV: http://cr.openjdk.java.net/~igerasim/8043476/0/webrev/
> Skipping the this toString test when there isn't enough heap seems okay.
> Using 0x20_000_000 looks a bit odd though, might be clearer to define
> MB as 1024*1024 and then check 512*MB, no big deal of course.
I'll change it as you suggest.
> I assume the System.out was just for debugging, it looks misaligned
> and misleading to print "Ok" before the checks.
>
Sure, it was for debugging only, I'll remove it.
Sincerely yours,
Ivan
> -Alan
>
>
More information about the core-libs-dev
mailing list