RFR(s): 8145204: JVM can hang when ParGCArrayScanChunk=4294967296 and ParallelGC is used (original) (raw)
sangheon sangheon.kim at oracle.com
Fri Mar 4 15:08:33 UTC 2016
- Previous message (by thread): RFR (M): 8151126: Clean up duplicate code for clearing the mark bitmaps
- Next message (by thread): RFR(s): 8145204: JVM can hang when ParGCArrayScanChunk=4294967296 and ParallelGC is used
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi all,
Could I get a couple of reviews for this tiny change for ParGCArrayScanChunk flag?
This flag is 'intx' and has a maximum range of 'max_intx' which makes an overflow issue. I'm proposing to change to 'int' and limit its maximum to 'max_jint/3'.
This flag is used when we want to process long object array into smaller pieces. The max array length is almost max_jint[1] and the decision for split is made like below:
int remainder = array length - ParGCArrayScanChunk; if (remainder > 2 * ParGCArrayScanChunk) { // split to smaller pieces }
So larger than 'max_jint/3 (approximate)' would not be handled separately.
CR: https://bugs.openjdk.java.net/browse/JDK-8145204 Webrev: http://cr.openjdk.java.net/~sangheki/8145204/webrev.00 Testing: JPRT, manual test[2]
[1]: our implementation is 'align_size_down(max_jint - obj header size, MinObjAlignment)' [2]: Call System.gc() with VM option of '-XX:+{GC modes} -XX:MarkSweepAlwaysCompactCount=715827883' (=max_jint/3 + 1).
Thanks, Sangheon
- Previous message (by thread): RFR (M): 8151126: Clean up duplicate code for clearing the mark bitmaps
- Next message (by thread): RFR(s): 8145204: JVM can hang when ParGCArrayScanChunk=4294967296 and ParallelGC is used
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]