[GR-71271] Don't do an incremental GC before a forced full GC with CompactingOldGen. #12513
Add this suggestion to a batch that can be applied as a single commit. This suggestion is invalid because no changes were made to the code. Suggestions cannot be applied while the pull request is closed. Suggestions cannot be applied while viewing a subset of changes. Only one suggestion per line can be applied in a batch. Add this suggestion to a batch that can be applied as a single commit. Applying suggestions on deleted lines is not supported. You must change the existing code in this line in order to create a valid suggestion. Outdated suggestions cannot be applied. This suggestion has been applied or marked resolved. Suggestions cannot be applied from pending reviews. Suggestions cannot be applied on multi-line comments. Suggestions cannot be applied while the pull request is queued to merge. Suggestion cannot be applied right now. Please check back later.
When a full GC is requested via
System.gc()or at the end of a libgraal compilation, the policy is asked whether to do an incremental collection first, but does not have the information that a full GC will happen either way. In case ofCompactingOldGen, it would prefer to do the full GC immediately, which this change enables.This change can make a difference with benchmarks, which commonly trigger GC between iterations. While the collections are excluded from reported iteration times, they typically are not excluded from footprint measurements. Future policy decisions can also be negatively impacted by the unnecessary collections.
The change does not have an impact with
CopyingOldGen, which is the current default. WithCompactingOldGen, it leads to significant improvements for scaladoc and kiama, and potentially lusearch, sunflow and scala-doku.