src/share/vm/runtime/arguments.cpp

Print this page
rev 3986 : 7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
Summary: Refactor G1's hot card cache and card counts table into their own files. Simplify the card counts table, including removing the encoding of the card index in each entry. The card counts table now has a 1:1 correspondence with the cards spanned by heap. Space for the card counts table is reserved from virtual memory (rather than C heap) during JVM startup and is committed/expanded when the heap is expanded.
Reviewed-by:


1967   // Note: only executed in non-PRODUCT mode
1968   if (!UseAsyncConcMarkSweepGC &&
1969       (ExplicitGCInvokesConcurrent ||
1970        ExplicitGCInvokesConcurrentAndUnloadsClasses)) {
1971     jio_fprintf(defaultStream::error_stream(),
1972                 "error: +ExplicitGCInvokesConcurrent[AndUnloadsClasses] conflicts"
1973                 " with -UseAsyncConcMarkSweepGC");
1974     status = false;
1975   }
1976 
1977   status = status && verify_min_value(ParGCArrayScanChunk, 1, "ParGCArrayScanChunk");
1978 
1979 #ifndef SERIALGC
1980   if (UseG1GC) {
1981     status = status && verify_percentage(InitiatingHeapOccupancyPercent,
1982                                          "InitiatingHeapOccupancyPercent");
1983     status = status && verify_min_value(G1RefProcDrainInterval, 1,
1984                                         "G1RefProcDrainInterval");
1985     status = status && verify_min_value((intx)G1ConcMarkStepDurationMillis, 1,
1986                                         "G1ConcMarkStepDurationMillis");


1987   }
1988 #endif
1989 
1990   status = status && verify_interval(RefDiscoveryPolicy,
1991                                      ReferenceProcessor::DiscoveryPolicyMin,
1992                                      ReferenceProcessor::DiscoveryPolicyMax,
1993                                      "RefDiscoveryPolicy");
1994 
1995   // Limit the lower bound of this flag to 1 as it is used in a division
1996   // expression.
1997   status = status && verify_interval(TLABWasteTargetPercent,
1998                                      1, 100, "TLABWasteTargetPercent");
1999 
2000   status = status && verify_object_alignment();
2001 
2002   status = status && verify_min_value(ClassMetaspaceSize, 1*M,
2003                                       "ClassMetaspaceSize");
2004 
2005   status = status && verify_interval(MarkStackSizeMax,
2006                                   1, (max_jint - 1), "MarkStackSizeMax");




1967   // Note: only executed in non-PRODUCT mode
1968   if (!UseAsyncConcMarkSweepGC &&
1969       (ExplicitGCInvokesConcurrent ||
1970        ExplicitGCInvokesConcurrentAndUnloadsClasses)) {
1971     jio_fprintf(defaultStream::error_stream(),
1972                 "error: +ExplicitGCInvokesConcurrent[AndUnloadsClasses] conflicts"
1973                 " with -UseAsyncConcMarkSweepGC");
1974     status = false;
1975   }
1976 
1977   status = status && verify_min_value(ParGCArrayScanChunk, 1, "ParGCArrayScanChunk");
1978 
1979 #ifndef SERIALGC
1980   if (UseG1GC) {
1981     status = status && verify_percentage(InitiatingHeapOccupancyPercent,
1982                                          "InitiatingHeapOccupancyPercent");
1983     status = status && verify_min_value(G1RefProcDrainInterval, 1,
1984                                         "G1RefProcDrainInterval");
1985     status = status && verify_min_value((intx)G1ConcMarkStepDurationMillis, 1,
1986                                         "G1ConcMarkStepDurationMillis");
1987     status = status && verify_interval(G1ConcRSHotCardLimit, 0, max_jubyte,
1988                                        "G1ConcRSHotCardLimit");
1989   }
1990 #endif
1991 
1992   status = status && verify_interval(RefDiscoveryPolicy,
1993                                      ReferenceProcessor::DiscoveryPolicyMin,
1994                                      ReferenceProcessor::DiscoveryPolicyMax,
1995                                      "RefDiscoveryPolicy");
1996 
1997   // Limit the lower bound of this flag to 1 as it is used in a division
1998   // expression.
1999   status = status && verify_interval(TLABWasteTargetPercent,
2000                                      1, 100, "TLABWasteTargetPercent");
2001 
2002   status = status && verify_object_alignment();
2003 
2004   status = status && verify_min_value(ClassMetaspaceSize, 1*M,
2005                                       "ClassMetaspaceSize");
2006 
2007   status = status && verify_interval(MarkStackSizeMax,
2008                                   1, (max_jint - 1), "MarkStackSizeMax");