1488 }
1489 }
1490 #endif // _LP64
1491 #endif // !ZERO
1492 }
1493
1494 void Arguments::set_conservative_max_heap_alignment() {
1495 // The conservative maximum required alignment for the heap is the maximum of
1496 // the alignments imposed by several sources: any requirements from the heap
1497 // itself, the collector policy and the maximum page size we may run the VM
1498 // with.
1499 size_t heap_alignment = GenCollectedHeap::conservative_max_heap_alignment();
1500 #if INCLUDE_ALL_GCS
1501 if (UseParallelGC) {
1502 heap_alignment = ParallelScavengeHeap::conservative_max_heap_alignment();
1503 } else if (UseG1GC) {
1504 heap_alignment = G1CollectedHeap::conservative_max_heap_alignment();
1505 }
1506 #endif // INCLUDE_ALL_GCS
1507 _conservative_max_heap_alignment = MAX3(heap_alignment, os::max_page_size(),
1508 CollectorPolicy::compute_max_alignment());
1509 }
1510
1511 void Arguments::set_ergonomics_flags() {
1512
1513 if (os::is_server_class_machine()) {
1514 // If no other collector is requested explicitly,
1515 // let the VM select the collector based on
1516 // machine class and automatic selection policy.
1517 if (!UseSerialGC &&
1518 !UseConcMarkSweepGC &&
1519 !UseG1GC &&
1520 !UseParNewGC &&
1521 FLAG_IS_DEFAULT(UseParallelGC)) {
1522 if (should_auto_select_low_pause_collector()) {
1523 FLAG_SET_ERGO(bool, UseConcMarkSweepGC, true);
1524 } else {
1525 FLAG_SET_ERGO(bool, UseParallelGC, true);
1526 }
1527 }
1528 }
2145 warning("Heap verification at shutdown disabled "
2146 "(due to current incompatibility with FLSVerifyAllHeapReferences)");
2147 VerifyBeforeExit = false; // Disable verification at shutdown
2148 }
2149 }
2150
2151 // Note: only executed in non-PRODUCT mode
2152 if (!UseAsyncConcMarkSweepGC &&
2153 (ExplicitGCInvokesConcurrent ||
2154 ExplicitGCInvokesConcurrentAndUnloadsClasses)) {
2155 jio_fprintf(defaultStream::error_stream(),
2156 "error: +ExplicitGCInvokesConcurrent[AndUnloadsClasses] conflicts"
2157 " with -UseAsyncConcMarkSweepGC");
2158 status = false;
2159 }
2160
2161 status = status && verify_min_value(ParGCArrayScanChunk, 1, "ParGCArrayScanChunk");
2162
2163 #if INCLUDE_ALL_GCS
2164 if (UseG1GC) {
2165 status = status && verify_percentage(InitiatingHeapOccupancyPercent,
2166 "InitiatingHeapOccupancyPercent");
2167 status = status && verify_min_value(G1RefProcDrainInterval, 1,
2168 "G1RefProcDrainInterval");
2169 status = status && verify_min_value((intx)G1ConcMarkStepDurationMillis, 1,
2170 "G1ConcMarkStepDurationMillis");
2171 status = status && verify_interval(G1ConcRSHotCardLimit, 0, max_jubyte,
2172 "G1ConcRSHotCardLimit");
2173 status = status && verify_interval(G1ConcRSLogCacheSize, 0, 31,
2174 "G1ConcRSLogCacheSize");
2175 }
2176 if (UseConcMarkSweepGC) {
2177 status = status && verify_min_value(CMSOldPLABNumRefills, 1, "CMSOldPLABNumRefills");
2178 status = status && verify_min_value(CMSOldPLABToleranceFactor, 1, "CMSOldPLABToleranceFactor");
2179 status = status && verify_min_value(CMSOldPLABMax, 1, "CMSOldPLABMax");
2180 status = status && verify_interval(CMSOldPLABMin, 1, CMSOldPLABMax, "CMSOldPLABMin");
2181
2182 status = status && verify_min_value(CMSYoungGenPerWorker, 1, "CMSYoungGenPerWorker");
2183
2184 status = status && verify_min_value(CMSSamplingGrain, 1, "CMSSamplingGrain");
|
1488 }
1489 }
1490 #endif // _LP64
1491 #endif // !ZERO
1492 }
1493
1494 void Arguments::set_conservative_max_heap_alignment() {
1495 // The conservative maximum required alignment for the heap is the maximum of
1496 // the alignments imposed by several sources: any requirements from the heap
1497 // itself, the collector policy and the maximum page size we may run the VM
1498 // with.
1499 size_t heap_alignment = GenCollectedHeap::conservative_max_heap_alignment();
1500 #if INCLUDE_ALL_GCS
1501 if (UseParallelGC) {
1502 heap_alignment = ParallelScavengeHeap::conservative_max_heap_alignment();
1503 } else if (UseG1GC) {
1504 heap_alignment = G1CollectedHeap::conservative_max_heap_alignment();
1505 }
1506 #endif // INCLUDE_ALL_GCS
1507 _conservative_max_heap_alignment = MAX3(heap_alignment, os::max_page_size(),
1508 CollectorPolicy::compute_heap_alignment());
1509 }
1510
1511 void Arguments::set_ergonomics_flags() {
1512
1513 if (os::is_server_class_machine()) {
1514 // If no other collector is requested explicitly,
1515 // let the VM select the collector based on
1516 // machine class and automatic selection policy.
1517 if (!UseSerialGC &&
1518 !UseConcMarkSweepGC &&
1519 !UseG1GC &&
1520 !UseParNewGC &&
1521 FLAG_IS_DEFAULT(UseParallelGC)) {
1522 if (should_auto_select_low_pause_collector()) {
1523 FLAG_SET_ERGO(bool, UseConcMarkSweepGC, true);
1524 } else {
1525 FLAG_SET_ERGO(bool, UseParallelGC, true);
1526 }
1527 }
1528 }
2145 warning("Heap verification at shutdown disabled "
2146 "(due to current incompatibility with FLSVerifyAllHeapReferences)");
2147 VerifyBeforeExit = false; // Disable verification at shutdown
2148 }
2149 }
2150
2151 // Note: only executed in non-PRODUCT mode
2152 if (!UseAsyncConcMarkSweepGC &&
2153 (ExplicitGCInvokesConcurrent ||
2154 ExplicitGCInvokesConcurrentAndUnloadsClasses)) {
2155 jio_fprintf(defaultStream::error_stream(),
2156 "error: +ExplicitGCInvokesConcurrent[AndUnloadsClasses] conflicts"
2157 " with -UseAsyncConcMarkSweepGC");
2158 status = false;
2159 }
2160
2161 status = status && verify_min_value(ParGCArrayScanChunk, 1, "ParGCArrayScanChunk");
2162
2163 #if INCLUDE_ALL_GCS
2164 if (UseG1GC) {
2165 status = status && verify_percentage(G1NewSizePercent, "G1NewSizePercent");
2166 status = status && verify_percentage(G1MaxNewSizePercent, "G1MaxNewSizePercent");
2167 status = status && verify_interval(G1NewSizePercent, 0, G1MaxNewSizePercent, "G1NewSizePercent");
2168
2169 status = status && verify_percentage(InitiatingHeapOccupancyPercent,
2170 "InitiatingHeapOccupancyPercent");
2171 status = status && verify_min_value(G1RefProcDrainInterval, 1,
2172 "G1RefProcDrainInterval");
2173 status = status && verify_min_value((intx)G1ConcMarkStepDurationMillis, 1,
2174 "G1ConcMarkStepDurationMillis");
2175 status = status && verify_interval(G1ConcRSHotCardLimit, 0, max_jubyte,
2176 "G1ConcRSHotCardLimit");
2177 status = status && verify_interval(G1ConcRSLogCacheSize, 0, 31,
2178 "G1ConcRSLogCacheSize");
2179 }
2180 if (UseConcMarkSweepGC) {
2181 status = status && verify_min_value(CMSOldPLABNumRefills, 1, "CMSOldPLABNumRefills");
2182 status = status && verify_min_value(CMSOldPLABToleranceFactor, 1, "CMSOldPLABToleranceFactor");
2183 status = status && verify_min_value(CMSOldPLABMax, 1, "CMSOldPLABMax");
2184 status = status && verify_interval(CMSOldPLABMin, 1, CMSOldPLABMax, "CMSOldPLABMin");
2185
2186 status = status && verify_min_value(CMSYoungGenPerWorker, 1, "CMSYoungGenPerWorker");
2187
2188 status = status && verify_min_value(CMSSamplingGrain, 1, "CMSSamplingGrain");
|