Idle collection trigger should be based on "allocation rate" and scale according to major collection time
Idle collections currently only happen after a certain period of NO activity in a system. In realistic applications, this might not ever happen, something is always going on. What instead varies is the rate of allocation,
See
Ulan Degenbaev, Jochen Eisinger, Manfred Ernst, Ross McIlroy, and Hannes Payer. 2016. Idle time garbage collection scheduling. SIGPLAN Not. 51, 6 (June 2016), 570–583. DOI:https://doi.org/10.1145/2980983.2908106
Specifically, the idle collections are triggered when the rate of allocation
A well-tuned threshold for the allocation rate is the central part of the controller. Initially we used a fixed threshold, which worked well for the powerful desktop and laptop computers on which we originally tuned the system, but did not work for slower mobile devices. In order to adapt to different hardware speeds, we now consider the allocation rate relative to the measured major garbage collection speed: (μ = g/(g+a)), where g is the major garbage collection speed and a is the allocation rate. This ratio μ can be thought of as the mutator utilization for the time window from now until the next major garbage collection, under the assumption that the current allocation rate stays constant and the heap is currently empty.
So I propose we also look at this metric rather than "whether we have done nothing for 0.3 seconds". The number they choose for μ_inactive is 0.993.