Currently, the default pause time interval is 500ms. If a user sets a pause time target -XX:MaxGCPauseMillis=P, where P >= 500ms, without setting the interval explicitly with -XX:GCPauseIntervalMillis=T, G1 core dumps as we hit a guarantee that says that the pause time target should be less than the interval:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (g1CollectorPolicy.cpp:265), pid=7197, tid=2
# Error: guarantee(max_gc_time < time_slice,"Max GC time should not be greater than the time slice")
#
There are two changes we should make:
a) raise a vm error, not a guarantee failure / core dump
b) deal quietly with the case where the specified pause time target is >= the default interval
|