RFR: Allow regulator to schedule global cycles for the purpose of class unloading

William Kemper wkemper at openjdk.java.net
Thu Apr 28 21:00:40 UTC 2022


Generational mode only supports class unloading during _global_ cycles. Global cycles can only be triggered in generational mode by an explicit `System.gc` call. With this change, the regulator is able to trigger periodic global cycles based on the value of `ShenandoahUnloadClassesFrequency`. This is currently disabled by default for the generational mode because we've not found a workload that shows a clear benefit, however, we expect it will be needed for longer running workloads and we want the ability to turn this on when necessary.

-------------

Commit messages:
 - Disable periodic concurrent class unloading cycles for generation mode
 - Dial back class unloading frequency to every 50 cycles
 - Bypass heuristic when we need to unload classes
 - Allow regulator to schedule periodic global collects

Changes: https://git.openjdk.java.net/shenandoah/pull/138/files
 Webrev: https://webrevs.openjdk.java.net/?repo=shenandoah&pr=138&range=00
  Stats: 21 lines in 3 files changed: 15 ins; 1 del; 5 mod
  Patch: https://git.openjdk.java.net/shenandoah/pull/138.diff
  Fetch: git fetch https://git.openjdk.java.net/shenandoah pull/138/head:pull/138

PR: https://git.openjdk.java.net/shenandoah/pull/138


More information about the shenandoah-dev mailing list