Есть ли в Java GC, который не вводит задержку (остановку мира), возможно, работая на 100% одновременно? - PullRequest
7 голосов
/ 24 марта 2012

Просто любопытно. Я что-то слышал о новой G1GC, решающей эту проблему задержки. Я не могу / не хочу использовать RTSJ.

Заранее спасибо

Ответы [ 4 ]

7 голосов
/ 24 марта 2012

Вас может заинтересовать нечто вроде Zing JVM .

Системы Azul приложили немало усилий для настройки JVM с малой задержкой. Я считаю, что есть также несколько интересных технических статей, объясняющих, как это делается.

6 голосов
/ 24 марта 2012

Звучит так, будто вы ищете CMS GC - одновременная развертка метки .

enter image description here

(источник: https://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf, стр.12)


Обновление за декабрь 2015 года: возможно, вас заинтересует ГХ Азула "без пауз". См. Объяснение "безостановочного" сборщика мусора Азула для получения дополнительной информации.

2 голосов
/ 24 марта 2012

Я не думаю, что есть какие-либо сборщики мусора с нулевой паузой. Но, вообще говоря, сборщик с низкой паузой, такой как CMS, сделает эту работу.

Проблемы с паузами и уменьшением паузы заключаются в следующем:

  • Режим сбора с нулевой паузой (или почти нулевой паузы) значительно увеличивает накладные расходы для нормального выполнения программы. Это особенно верно для многопоточных языков, таких как Java.

  • Схемы, использующие выделенный поток или потоки для сбора мусора, могут быть перегружены, если приложение генерирует слишком много мусора.

  • Любая схема GC даст вам низкую производительность, если шаблоны использования памяти приложением слишком «комковаты» и / или у вас недостаточно физической и виртуальной памяти.

1 голос
/ 24 марта 2012

Вы можете попробовать последнюю версию сборки мусора G1 в JDK 7.

...