Шаг развертки - это просто «еще один» способ отсрочить событие «останови мир». Конечно, в теории это хорошо. При маркировке также следите за этим «свободным» пространством, где были обнаружены мертвые объекты. Таким образом, вы можете использовать эту информацию из этих списков при следующем размещении.
Дело в том, что куча не является «компактной», когда вы используете только sweep
, поэтому, когда нет свободного смежного свободного места для выделения (на основе этой информации о свободных списках), фаза сжатия все равно будет быть выполненным.
Мое последнее замечание: CMS
устарело, никто не поддерживает, поэтому понимание того, что оно делает, может быть интересным, но не очень полезным; как другие G C делают вещи по-другому.