Developers are increasingly demanding more definite behavior from GCs. For instance, wouldn't you prefer to execute your application with a GC that guarantees an upper limit to its pause timings?
When working with G1 GC in Java 12, you can abort mixed collections if they exceed your specified limit. Note that you can't abort all categories of G1 GC pauses.
A mixed collection includes both young and old memory regions for G1 to clean. An analysis system selects the set of regions, collectively called a collection set, for G1 GC to work on. Prior to JDK 12, G1 GC could exceed the maximum pause time when the collection set was too large, the collection set included too many old regions, or the collection set included regions with stale data.
With JDK 12, when G1 collects live objects from mixed collections, it can do so in an incremental...