Spec-Zone .ru
спецификации, руководства, описания, API
|
Параллельный коллектор развертки метки, также известный как параллельный коллектор или CMS, предназначается в приложениях, которые чувствительны к паузам сборки "мусора". Это выполняет большинство действия сборки "мусора" одновременно, то есть, в то время как потоки приложения работают, чтобы сохранить вызванные сборкой "мусора" паузы короткими. Ключевые улучшения производительности, сделанные к коллектору CMS в JDK 6, обрисовываются в общих чертах ниже. См. документы, на которые ссылаются ниже для более подробной информации об этих изменениях, коллекторе CMS, и сборке "мусора" в HotSpot.
Отметьте, что эти функции только применяются, когда коллектор CMS используется; опция -XX:+UseConcMarkSweepGC
выбирает коллектор CMS.
System.gc()
и Runtime.getRuntime().gc()
методы дают JVM команду выполнять сборщик "мусора", чтобы переработать неиспользованные объекты. Реализация HotSpot этих методов в настоящий момент останавливает все потоки приложения, чтобы собрать всю "кучу", которая может привести к длинной паузе особенно, когда "куча" является большой. Это работает против цели коллектора CMS сохранить паузы короткими.
В JDK 6, коллектор CMS может дополнительно выполнить эти наборы одновременно, чтобы избежать длинной паузы в ответ на a System.gc()
или Runtime.getRuntime().gc()
вызвать. Чтобы активировать эту опцию, добавьте опцию
-XX:+ExplicitGCInvokesConcurrent
java
командная строка. Несколько изменений были произведены то увеличение размер по умолчанию молодой генерации, когда коллектор CMS используется:
Основной эффект этих изменений состоит в том, чтобы улучшить производительность приложения, уменьшая издержки сборки "мусора". Однако, потому что молодой размер генерации по умолчанию больше, приложения могут также видеть большие молодые времена паузы генерации и большее место памяти. В случае необходимости, пожалуйста, см. документы, на которые ссылаются ниже для большего количества деталей о поколениях, пробелах оставшегося в живых и опциях, доступных для корректировки их размеров.
Коллектор CMS теперь использует многократные потоки, чтобы выполнить параллельную задачу маркировки параллельно на платформах с многократными процессорами. Это уменьшает продолжительность параллельного цикла маркировки, позволяя коллектор поддерживать приложения с большим числом потоков и более высоких объектных уровней выделения, особенно на больших многопроцессорных машинах. Предшествующие выпуски, используемые только единственный поток для параллельной маркировки, ограничивая возможность коллектора не отставать от приложений с очень высокими объектными уровнями выделения.