comparison src/share/vm/runtime/arguments.cpp @ 7471:4c8bf5e55392

8005489: VM hangs during GC with ParallelGC and ParallelGCThreads=0 Summary: Print an error message and exit the VM if UseParallalGC is combined with ParllelGCThreads==0. Also reviewed by vitalyd@gmail.com. Reviewed-by: stefank, ehelin
author brutisso
date Wed, 09 Jan 2013 09:48:58 +0100
parents c98b676a98b4
children b2fef6b220e9
comparison
equal deleted inserted replaced
7455:0b54ffe4c2d3 7471:4c8bf5e55392
1452 } 1452 }
1453 FLAG_SET_DEFAULT(UseParallelGC, true); 1453 FLAG_SET_DEFAULT(UseParallelGC, true);
1454 1454
1455 // If no heap maximum was requested explicitly, use some reasonable fraction 1455 // If no heap maximum was requested explicitly, use some reasonable fraction
1456 // of the physical memory, up to a maximum of 1GB. 1456 // of the physical memory, up to a maximum of 1GB.
1457 if (UseParallelGC) { 1457 FLAG_SET_DEFAULT(ParallelGCThreads,
1458 FLAG_SET_DEFAULT(ParallelGCThreads, 1458 Abstract_VM_Version::parallel_worker_threads());
1459 Abstract_VM_Version::parallel_worker_threads()); 1459 if (ParallelGCThreads == 0) {
1460 1460 jio_fprintf(defaultStream::error_stream(),
1461 // If InitialSurvivorRatio or MinSurvivorRatio were not specified, but the 1461 "The Parallel GC can not be combined with -XX:ParallelGCThreads=0\n");
1462 // SurvivorRatio has been set, reset their default values to SurvivorRatio + 1462 vm_exit(1);
1463 // 2. By doing this we make SurvivorRatio also work for Parallel Scavenger. 1463 }
1464 // See CR 6362902 for details. 1464
1465 if (!FLAG_IS_DEFAULT(SurvivorRatio)) { 1465
1466 if (FLAG_IS_DEFAULT(InitialSurvivorRatio)) { 1466 // If InitialSurvivorRatio or MinSurvivorRatio were not specified, but the
1467 FLAG_SET_DEFAULT(InitialSurvivorRatio, SurvivorRatio + 2); 1467 // SurvivorRatio has been set, reset their default values to SurvivorRatio +
1468 } 1468 // 2. By doing this we make SurvivorRatio also work for Parallel Scavenger.
1469 if (FLAG_IS_DEFAULT(MinSurvivorRatio)) { 1469 // See CR 6362902 for details.
1470 FLAG_SET_DEFAULT(MinSurvivorRatio, SurvivorRatio + 2); 1470 if (!FLAG_IS_DEFAULT(SurvivorRatio)) {
1471 } 1471 if (FLAG_IS_DEFAULT(InitialSurvivorRatio)) {
1472 } 1472 FLAG_SET_DEFAULT(InitialSurvivorRatio, SurvivorRatio + 2);
1473 1473 }
1474 if (UseParallelOldGC) { 1474 if (FLAG_IS_DEFAULT(MinSurvivorRatio)) {
1475 // Par compact uses lower default values since they are treated as 1475 FLAG_SET_DEFAULT(MinSurvivorRatio, SurvivorRatio + 2);
1476 // minimums. These are different defaults because of the different 1476 }
1477 // interpretation and are not ergonomically set. 1477 }
1478 if (FLAG_IS_DEFAULT(MarkSweepDeadRatio)) { 1478
1479 FLAG_SET_DEFAULT(MarkSweepDeadRatio, 1); 1479 if (UseParallelOldGC) {
1480 } 1480 // Par compact uses lower default values since they are treated as
1481 // minimums. These are different defaults because of the different
1482 // interpretation and are not ergonomically set.
1483 if (FLAG_IS_DEFAULT(MarkSweepDeadRatio)) {
1484 FLAG_SET_DEFAULT(MarkSweepDeadRatio, 1);
1481 } 1485 }
1482 } 1486 }
1483 } 1487 }
1484 1488
1485 void Arguments::set_g1_gc_flags() { 1489 void Arguments::set_g1_gc_flags() {