Это уже происходит. Например, в G1GC
это либо когда заполнено пространство младшего размера (для небольшой коллекции), либо когда нажата кнопка InitiatingHeapOccupancyPercent
(для основной коллекции). Оба они управляются с помощью флагов, так что вы можете сказать, когда точно - это G C, который должен быть запущен, если вы действительно этого хотите.
В Shenandoah
есть ShenandoahGCHeuristics
, который выберет некоторые эвристики (они также зависят от размера).
Если, с другой стороны, вы хотите сделать это программно (есть инструменты, которые уже делают это), вы можете написать некоторый код, который будет проверять размер кучи (например, через ManagementFactory::getMemoryPoolMXBeans
), а затем через вызов агента . В общем, вам понадобится очень веская причина для этого.