Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java1_2013_2014 / java25.pptx
Скачиваний:
134
Добавлен:
16.04.2015
Размер:
239.12 Кб
Скачать

Параллельный сжимающий сборщик

Применим на многопроцессорных машинах, в приложениях с ограничением на время паузы на сборку мусора; неприменим на некоторых распределенных системах

Молодое поколение: так же, как и параллельный сборщик

3 фазы:

Маркировка (Marking)

Сводка (Summary)

Сжатие (Compaction)

(С) Сафонов В.О. 2013

Сборка в старшем поколении: маркировка

3 фазы:

Маркирующая фаза

Память разбивается на области фиксированного размера

Начальное множество доступных объектов распределяется между потоками

Все доступные объекты помечаются

Когда объект помечается как живой, запоминается информация о его размере и положении

(С)Сафонов В.О. 2013

Сборка в старшем поколении: сведение

Dense Prefix

Эту часть надо сжать

Определяется место, начиная с которого стоит сжимать память

Подсчитывается первый байт, который будет занимать каждая из областей после сжатия

(С)Сафонов В.О. 2013

Сборка в старшем поколении: сжатие

Копированием каждой области занимается отдельный поток

(С)Сафонов В.О. 2013

Сборщик с минимальной задержкой

Concurrent Mark-Sweep; Low-Latency Collector

Используется в приложениях, для которых важно небольшое время ответа

Молодое поколение: используется тот же алгоритм, что и в параллельном и параллельном сжимающем сборщиках

Старшее поколение: сборка осуществляется, в основном,

одновременно с выполнением

приложения (С) Сафонов В.О. 2013

CMS: сборка в старшем поколении

Пауза: начальная маркировка (initial mark)

Отмечаются все доступные объекты, не останавливая работу приложения

Пауза: завершение маркировки (remark) (многопоточная фаза)

Удаление мусора из памяти

(С)Сафонов В.О. 2013

Различия между СMS и последовательным сборщиками

Параллельный сборщик

CMS

Остановка

 

Начальная маркировка

 

 

Продолжение маркировки

приложения

 

 

 

Завершение маркировки

Сборка мусора

(С)

2013

Некоторые особенности CMS [1]

Отсутствие сжатия

Ускоряет процесс сборки мусора в старом поколении

Усложняет процесс выделения памяти

Заводятся списки свободных мест в памяти

Усложняет процесс сборки мусора в младшем поколении

Возможность появления “плавающего мусора” (floating garbage)

(С)Сафонов В.О. 2013

Некоторые особенности CMS [2]

Борьба с фрагментированностью:

Запоминаются часто используемые размеры

Соединение/разделение свободных блоков памяти

Момент начала сборки:

Чуть раньше, чем заполнится старое поколение

Время начала сборки определяется из статистики

Сколько занимали предыдущие сборки

Насколько быстро заполняется старое поколение

Можно задать процент заполненности памяти с помощью команды

XX:CM SInitiatingO ccupancyFraction=[число<100]

(С)Сафонов В.О. 2013

Инкрементный режим

Сборщик мусора иногда приостанавливает свою работу, предоставляя приложению все ресурсы процессора

Этот режим полезен в случае, когда приложение работает на машине с 1-2 процессорами

(С)Сафонов В.О. 2013

Соседние файлы в папке java1_2013_2014