AFAIK, когда GC делает свою вещь, VM блокирует все выполняемые потоки - или, по крайней мере, когда он уплотняет кучу. Это относится к современным реализациям CLR и JVM (Производственные версии по состоянию на январь 2010 года)? Пожалуйста, не предоставляйте основные ссылки на GC, поскольку я понимаю рудиментарные работы.Сбор мусора и нитки
Я предполагаю, что глобальная блокировка имеет место, так как при уплотнении ссылки могут быть недействительными в течение периода перемещения, и кажется, проще всего заблокировать всю кучу (т. Е. Косвенно, заблокировав все потоки). Я могу представить себе более надежные механизмы, но KISS часто преобладает.
Если я ошибаюсь, на мой вопрос будет дано простое объяснение стратегии, используемой для минимизации блокировки. Если мое предположение верно, пожалуйста, пролить некоторый свет на следующие два вопросе:
Если это действительно поведение, как тяжеловес предприятие система, как JBOSS и Glassfish поддерживать высокую скорость последова- TPS? Я сделал некоторые поисковые запросы на JBOSS, и я ожидал найти что-то в APACHE, таком как распределитель памяти, подходящий для веб-обработки.
Перед лицом архитектур NUMA-esque (возможно, в ближайшем будущем) это звучит как катастрофа, если процессы не связаны с потоком и распределением памяти по процессору.
(+1) обязательно купит эту книгу. То, что я хотел бы узнать больше, это то, что происходит после «копирования на новую и процедуру обновления»? предположительно все ссылки обновляются, блокируя все потоки? Или это итерационная процедура? –
Насколько я знаю, даже самые совпадающие сборщики мусора «останавливают мир» для некоторых своих работ, хотя большинство задач выполняются одновременно. Однако CMS-коллектор в JVM 6 использует все доступные процессоры во время фазы останова. –
@edgar Спасибо, «CMS-collector» полезный термин для поиска - я просмотрю детали, когда у меня будет время. Кажется, это так, как я думал, - не обойти стороной «остановить мир». Было бы интересно иметь некоторую гипотезу или некоторые номера ярлыков о том, как эти глобальные фазы блокировки влияют на скорости TPS серьезных серверов производства (например, те, которые я упоминал в вопросе). –