
- •JAVA-ТЕХНОЛОГИЯ
- •Управление памятью
- •За что отвечает сборщик мусора
- •Требования к сборщику
- •Различия сборщиков
- •Концепция поколений
- •Молодое поколение
- •Старшее поколение
- •Поколения в HotSpot JVM
- •Молодое поколение
- •Виды сборок мусора
- •Быстрое выделение памяти
- •Сборщики в HotSpot JVM
- •Последовательный
- •Молодое поколение (сборка)
- •Молодое поколение (результат)
- •Старшее поколение
- •Старшее поколение
- •Параллельный сборщик
- •Молодое поколение
- •Параллельный сжимающий сборщик
- •Сборка в старшем поколении: маркировка
- •Сборка в старшем поколении: сведение
- •Сборка в старшем поколении: сжатие
- •Сборщик с минимальной задержкой
- •CMS: сборка в старшем поколении
- •Различия между СMS и последовательным сборщиками
- •Некоторые особенности CMS [1]
- •Некоторые особенности CMS [2]
- •Инкрементный режим
- •Клиентские и серверные конфигурации
- •Предустановки для клиентских машин
- •Предустановки для серверных машин
- •Получение желаемого поведения программы
- •Рекомендации по настройке сборки мусора
- •Выбор другого сборщика мусора
- •Изменение размеров кучи
- •Изменение размеров отдельных поколений
- •Настройка параллельных сборщиков
- •OutOfMemoryError
- •Способы оценки работы сборщика мусора
- •Список литературы

Параллельный сжимающий сборщик
Применим на многопроцессорных машинах, в приложениях с ограничением на время паузы на сборку мусора; неприменим на некоторых распределенных системах
Молодое поколение: так же, как и параллельный сборщик
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