RFR [8043476] java/util/BitSet/BSMethods.java failed with: java.lang.OutOfMemoryError: Java heap space

Alan Bateman Alan.Bateman at oracle.com
Mon May 26 12:31:23 UTC 2014


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 assume the 
System.out was just for debugging, it looks misaligned and misleading to 
print "Ok" before the checks.

-Alan



More information about the core-libs-dev mailing list