CSR :
|
|
Relates :
|
|
Relates :
|
Summary ------- Introduce controls for a periodic garbage collection and optional system idle detection to allow giving back of unused memory for the G1 garbage collector for JEP JDK-8204089 Promptly Return Unused Committed Memory from G1. Problem ------- At the moment G1 will never automatically gives back Java heap memory to the operating system if the application is inactive. Solution -------- This CSR introduces control options for periodic concurrent garbage collections. I.e. when and how these periodic garbage collections to reclaim memory should occur. This includes the option `G1PeriodicGCInterval` to determine the polling interval, `G1PeriodicGCSystemLoadThreshold` to optionally take system load into account, and `G1PeriodicGCInvokesConcurrent` to determine the type of garbage collection to occur. This set of options has been found appropriate for this change after discussion on the hotspot-gc-dev mailing list, most recently in the thread at http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2018-September/023197.html. Alternatives are discussed in the associated JEP-JDK-8204089: Promptly Return Unused Committed Memory from G1. More, earlier discussion links are available in the comments section of that issue. Specification ------------- manageable(uintx, G1PeriodicGCInterval, 0, \ "Number of milliseconds after a previous GC to wait before " \ "triggering a periodic gc. A value of zero disables periodically "\ "enforced gc cycles.") \ range(0, max_jlong) \ \ product(bool, G1PeriodicGCInvokesConcurrent, true, \ "Determines the kind of periodic GC. Set to true to have G1 " \ "perform a concurrent GC as periodic GC, otherwise use a STW " \ "Full GC.") \ \ manageable(uintx, G1PeriodicGCSystemLoadThreshold, 0, \ "Maximum recent system wide system load as returned by the 1m " \ "value of getloadavg() at which G1 triggers a periodic GC. A " \ "load above this value cancels a given periodic GC. A value of " \ "zero disables this check.") \
|