SlideShare a Scribd company logo
1 of 41
Russia Development Centre
Deutsche Bank
Deutsche Bank
Group Technology & Operations
Борьба с GC паузами в JVM
Теория и Практика
Алексей Рагозин, Deutsche Bank
Russia Development Centre
Deutsche Bank
Содержание доклада
Теория
• Алгоритмы • Экономическая модель
• Гипотеза о поколениях • Барьеры записи
• Модель длительности пауз
Практика
• Алгоритмы HotSpot JVM • Concurrent Mark Sweep
• Сайзинг JVM • Фрагментация памяти • Другие проблемы 
Russia Development Centre
Deutsche Bank
Deutsche Bank
Group Technology & Operations
ТЕОРИЯ
Russia Development Centre
Deutsche Bank
Терминология
Stop-the-world (STW) pause
– полная заморозка прикладных потоков JVM
Compacting algorithms
– алгоритмыперемещающиеобъектывпамятивоизбежаниефрагментации
Parallel collection
– использование многопоточности для сокращения STW паузы
Concurrent collection
– “фоновая” сбора мусора не требующая STW
Russia Development Centre
Deutsche Bank
Как собрать “мусор”?
 Подсчёт ссылок
 Трассировка ссылок (обход графа)
 А зачем собирать?
Russia Development Centre
Deutsche Bank
Трассирующие алгоритмы
Mark Sweep
• Обойти граф, начиная с “корневых” ссылок
• Отметить живые объекты • Просканировать память и собрать “мусор”
Сборка копированием (copy collector)
• Каждый достижимый объект туже копируется в новую область памяти
• Ссылки на другие объекты корректируются при копировании
Mark Sweep Compact
• Mark Sweep + перемещение объектов в ходе sweep фазы
Russia Development Centre
Deutsche Bank
Сборка копированием
FROM
TO
roots
Russia Development Centre
Deutsche Bank
Сборка копированием
FROM
TO
roots
FROM
TO
roots
Russia Development Centre
Deutsche Bank
Сборка копированием
FROM
TO
roots
FROM
TO
roots
1
Russia Development Centre
Deutsche Bank
Сборка копированием
FROM
TO
roots
FROM
TO
roots
1 2
Russia Development Centre
Deutsche Bank
Сборка копированием
FROM
TO
roots
FROM
TO
roots
1 2
Russia Development Centre
Deutsche Bank
Сборка копированием
FROM
TO
roots
FROM
TO
roots
1 23
Russia Development Centre
Deutsche Bank
Экономика сборки мусора
S – объём кучи
L – объём живых объектов
Copy collection
 Эффективность
Mark-Sweep
 Эффективность
L
LS
c
S
LS
c
L
LS
c 21
Объѐм
мусора в
куче
Russia Development Centre
Deutsche Bank
Слабая гипотеза о поколениях
Постулаты
 Большинство объектов умирают молодыми
 Число ссылок на молодые объекты мало
Следствие
Еслихранитьмолодыеобъектыотдельноотстарых,можнообеспечить
высокую пропускную способность (молодое поколение)
и эффективное использование памяти (старое поколение).
Russia Development Centre
Deutsche Bank
Демография объектов в куче
Смертность(байт/с)
Возраст объектов
Период молодой сборки
Период старой сборки
∞
Russia Development Centre
Deutsche Bank
Generational collection
Молодое поколение
 Сборщик настроен на пропускную способность
Старое поколение
 Сборщик настроен на эффективное использование памяти
Продвижение (promotion) объектов в старое поколение
 Сборщик молодого поколения копирует живые объекты в
старое поколение после достижения “зрелого” возраста
Russia Development Centre
Deutsche Bank
Generational collection
Как получить все указатели из старого поколения на молодое?
Ответ – барьер на запись
Каждый раз при записи указателя в память в “старом”
пространстве, срабатывает барьер
Russia Development Centre
Deutsche Bank
Молодая сборка HotSpot JVM
Eden S1 S2 Tenured
Dirty cards
Collect roots for young GC
Scan stack traces
Scan dirty pages in old space
Сбор “корневых” ссылок
Russia Development Centre
Deutsche Bank
Молодая сборка HotSpot JVM
Eden S1 S2 Tenured
Dirty cards
Collect roots for young GC
Clean cards
Recursive copy of live objects (only live objects are traversed)
Копирование живых объектов
Russia Development Centre
Deutsche Bank
Молодая сборка HotSpot JVM
Eden S1 S2 Tenured
Dirty cards
Сборка закончена
Области памяти, не помеченные в таблице карт,
не могут содержать ссылки на молодое поколение
Russia Development Centre
Deutsche Bank
Фоновая маркировка
Проблема
 Граф объектов меняется по мере обхода *
* Даже в функциональных языках могут выполняться
отложенные вычисления, меняющие граф
Решение
 Барьер на запись – отслеживание ссылок изменившихся
за время обхода
Russia Development Centre
Deutsche Bank
Фоновая маркировка
 Card marking write barrier
HotSpot CMS, JRockit, IBM J9
 Snapshot-at-the-beginning (SATB) write barrier
HotSpot G1
 Альтернатива барьерузаписи– барьер на чтении
 Azul Zing JVM
Russia Development Centre
Deutsche Bank
SATB барьер записи (G1)
A B C D
GC A
C
Russia Development Centre
Deutsche Bank
SATB барьер записи (G1)
A B C D
GC C
D
Russia Development Centre
Deutsche Bank
SATB барьер записи (G1)
A B C D
GC C
D
Reference queue: B DОчередь ссылок:
Russia Development Centre
Deutsche Bank
SATB барьер записи (G1)
A B C D
GC C
D
Russia Development Centre
Deutsche Bank
SATB барьер записи (G1)
A B C D
GC D
D
Russia Development Centre
Deutsche Bank
SATB барьер записи (G1)
A B C D
GC
Reference queue: B DОчередь ссылок:
Russia Development Centre
Deutsche Bank
SATB барьер записи (G1)
A B C D
GC
Reference queue:
B
D
emptyОчередь ссылок: пусто
Russia Development Centre
Deutsche Bank
Concurrent Mark Sweep
[пауза] Сбор корневых ссылок
[фон] Обход графа объектов
[фон] Перемаркирова “грязных” страниц
[паузa] Финальная перемаркирова
[фон] Сканирование памяти (sweep)
Russia Development Centre
Deutsche Bank
Длительность паузы (CMS)
Young collection
Scan
thread
stacks
Scan dirty cards
Read
card
table
Scan
dirty
pages
Copy
live
objects
Initial
mark
Scan
thread
stacks
Scan
young
space
Remark
Scan
thread
stacks
Scan
young
space
Scan dirty cards
Read
card
table
Scan
dirty
pages
Пропорционально размеру
старого поколения
Стремится к константе с ростом
размера старого поколения
Пропорционально размеру
старого поколения
Стремится к константе с ростом
размера старого поколения
Russia Development Centre
Deutsche Bank
Эксперимент
http://blog.ragozin.info/2011/07/openjdk-patch-cutting-down-gc-pause.html
Russia Development Centre
Deutsche Bank
Другие компоненты паузы
Время синхронизации в safe point
Ожидание JNI блокировок
Сканирование стека
Обработка ссылок
• Weak • Soft • JNI • Finalizers
Russia Development Centre
Deutsche Bank
Deutsche Bank
Group Technology & Operations
Практика
Russia Development Centre
Deutsche Bank
“Боевые” настройки JVM
HotSpot JVM
Concurrent Mark Sweep алгоритм
Сайзинг памяти под приложение
Russia Development Centre
Deutsche Bank
Сайзинг
 -Xmx = -Xms
 -Xmx = размер старого + размер молодого
 -Xmn = размер молодого
 Старое поколение:
 Данные приложения (jmap –histo)
 Запас 30-50% на фоновую сборку и фрагментацию
Russia Development Centre
Deutsche Bank
Тонкая подстройка CMS
 Поиск оптимальных параметров молодой сборки
 -XX:CMSWaitDuration=N
 -XX:+CMSScavengeBeforeRemark
 Инкрементальный или нет?
 Выгружать классы или нет?
http://blog.ragozin.info/2011/07/gc-check-list-for-data-grid-nodes.html
Russia Development Centre
Deutsche Bank
Фрагментация
Russia Development Centre
Deutsche Bank
Фрагментация
Последствия фрагментации
 Однопоточный STM Mark Sweep Compact
 Очень долгое promotion failure recovery
Больше памяти – самый эффективный способ борьбы с
фрагментацией
Russia Development Centre
Deutsche Bank
Другие проблемы
 Свопинг – (Javaисвопинг–вещинесовместные)
 Reference abuse
 Медленные сейвпоинты
 Прямой доступ к памяти через JNI
Russia Development Centre
Deutsche Bank
Deutsche Bank
Group Technology & Operations
Спасибо
Алексей Рагозин, Deutsche Bank
http://blog.ragozin.info - мои статьи о JVM и не только

More Related Content

What's hot

"G1 GC и Обзор сборки мусора в HotSpot JVM" @ JUG SPb, 31-05-2012
"G1 GC и Обзор сборки мусора в HotSpot JVM" @ JUG SPb, 31-05-2012"G1 GC и Обзор сборки мусора в HotSpot JVM" @ JUG SPb, 31-05-2012
"G1 GC и Обзор сборки мусора в HotSpot JVM" @ JUG SPb, 31-05-2012Vladimir Ivanov
 
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Ontico
 
NoSQL thumbtack experience, Анатолий Никулин
NoSQL thumbtack experience, Анатолий НикулинNoSQL thumbtack experience, Анатолий Никулин
NoSQL thumbtack experience, Анатолий НикулинAnatoliy Nikulin
 
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Ontico
 
Couchbase, что за зверь и на что способен.
Couchbase, что за зверь и на что способен.Couchbase, что за зверь и на что способен.
Couchbase, что за зверь и на что способен.Alexey Rusnak
 
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)Ontico
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)Ontico
 
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++Антон Шестаков
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)Ontico
 
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)Ontico
 
Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)Alexey Lesovsky
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Ontico
 
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...Ontico
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Alexey Zinoviev
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015Alex Chistyakov
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
 
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Ontico
 
PostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектахPostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектахAlexey Vasiliev
 
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)Ontico
 

What's hot (20)

"G1 GC и Обзор сборки мусора в HotSpot JVM" @ JUG SPb, 31-05-2012
"G1 GC и Обзор сборки мусора в HotSpot JVM" @ JUG SPb, 31-05-2012"G1 GC и Обзор сборки мусора в HotSpot JVM" @ JUG SPb, 31-05-2012
"G1 GC и Обзор сборки мусора в HotSpot JVM" @ JUG SPb, 31-05-2012
 
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
 
NoSQL thumbtack experience, Анатолий Никулин
NoSQL thumbtack experience, Анатолий НикулинNoSQL thumbtack experience, Анатолий Никулин
NoSQL thumbtack experience, Анатолий Никулин
 
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
 
Couchbase, что за зверь и на что способен.
Couchbase, что за зверь и на что способен.Couchbase, что за зверь и на что способен.
Couchbase, что за зверь и на что способен.
 
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
 
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
 
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
 
Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
 
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
 
Умное кэширование в Rails
Умное кэширование в RailsУмное кэширование в Rails
Умное кэширование в Rails
 
PostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектахPostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектах
 
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)
 

Viewers also liked

Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?aragozin
 
Garbage collection in JVM
Garbage collection in JVMGarbage collection in JVM
Garbage collection in JVMaragozin
 
External analysis of deutsch bank (1)
External analysis of deutsch bank (1)External analysis of deutsch bank (1)
External analysis of deutsch bank (1)Artur Shorin
 
Digital transformation of the German banking industry, January 2017, english
 Digital transformation of the German banking industry, January 2017, english Digital transformation of the German banking industry, January 2017, english
Digital transformation of the German banking industry, January 2017, englishFrank Schwab
 
Coherence in billing (Oracle day Moscow 2009)
Coherence in billing (Oracle day Moscow 2009)Coherence in billing (Oracle day Moscow 2009)
Coherence in billing (Oracle day Moscow 2009)aragozin
 
What every Java developer should know about network?
What every Java developer should know about network?What every Java developer should know about network?
What every Java developer should know about network?aragozin
 
Business Ecosystems Console Management System
Business Ecosystems Console Management SystemBusiness Ecosystems Console Management System
Business Ecosystems Console Management SystemBusiness Ecosystems
 
Devirtualization of method calls
Devirtualization of method callsDevirtualization of method calls
Devirtualization of method callsaragozin
 
Filtering 100M objects in Coherence cache. What can go wrong?
Filtering 100M objects in Coherence cache. What can go wrong?Filtering 100M objects in Coherence cache. What can go wrong?
Filtering 100M objects in Coherence cache. What can go wrong?aragozin
 
Virtualizing Java in Java (jug.ru)
Virtualizing Java in Java (jug.ru)Virtualizing Java in Java (jug.ru)
Virtualizing Java in Java (jug.ru)aragozin
 
Danijela Branković, APEx PROJECT: ARCHIVES PORTAL EUROPE NETWORK OF EXCELLENCE
Danijela Branković, APEx PROJECT:ARCHIVES PORTAL EUROPE NETWORK OF EXCELLENCE Danijela Branković, APEx PROJECT:ARCHIVES PORTAL EUROPE NETWORK OF EXCELLENCE
Danijela Branković, APEx PROJECT: ARCHIVES PORTAL EUROPE NETWORK OF EXCELLENCE Arhivistika
 
нижняя саксония
нижняя саксониянижняя саксония
нижняя саксонияdinara1t
 
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)aragozin
 
Performance Test Driven Development (CEE SERC 2013 Moscow)
Performance Test Driven Development (CEE SERC 2013 Moscow)Performance Test Driven Development (CEE SERC 2013 Moscow)
Performance Test Driven Development (CEE SERC 2013 Moscow)aragozin
 
German Documentaries
German DocumentariesGerman Documentaries
German DocumentariesRGDoc
 
Performance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle CoherencePerformance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle Coherencearagozin
 

Viewers also liked (20)

Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?
 
Garbage collection in JVM
Garbage collection in JVMGarbage collection in JVM
Garbage collection in JVM
 
Social media in german banks
Social media in german banksSocial media in german banks
Social media in german banks
 
External analysis of deutsch bank (1)
External analysis of deutsch bank (1)External analysis of deutsch bank (1)
External analysis of deutsch bank (1)
 
Deutsche bank
Deutsche bankDeutsche bank
Deutsche bank
 
Digital transformation of the German banking industry, January 2017, english
 Digital transformation of the German banking industry, January 2017, english Digital transformation of the German banking industry, January 2017, english
Digital transformation of the German banking industry, January 2017, english
 
HDFC Persentation
HDFC PersentationHDFC Persentation
HDFC Persentation
 
Hdfc bank ppt
Hdfc bank pptHdfc bank ppt
Hdfc bank ppt
 
Coherence in billing (Oracle day Moscow 2009)
Coherence in billing (Oracle day Moscow 2009)Coherence in billing (Oracle day Moscow 2009)
Coherence in billing (Oracle day Moscow 2009)
 
What every Java developer should know about network?
What every Java developer should know about network?What every Java developer should know about network?
What every Java developer should know about network?
 
Business Ecosystems Console Management System
Business Ecosystems Console Management SystemBusiness Ecosystems Console Management System
Business Ecosystems Console Management System
 
Devirtualization of method calls
Devirtualization of method callsDevirtualization of method calls
Devirtualization of method calls
 
Filtering 100M objects in Coherence cache. What can go wrong?
Filtering 100M objects in Coherence cache. What can go wrong?Filtering 100M objects in Coherence cache. What can go wrong?
Filtering 100M objects in Coherence cache. What can go wrong?
 
Virtualizing Java in Java (jug.ru)
Virtualizing Java in Java (jug.ru)Virtualizing Java in Java (jug.ru)
Virtualizing Java in Java (jug.ru)
 
Danijela Branković, APEx PROJECT: ARCHIVES PORTAL EUROPE NETWORK OF EXCELLENCE
Danijela Branković, APEx PROJECT:ARCHIVES PORTAL EUROPE NETWORK OF EXCELLENCE Danijela Branković, APEx PROJECT:ARCHIVES PORTAL EUROPE NETWORK OF EXCELLENCE
Danijela Branković, APEx PROJECT: ARCHIVES PORTAL EUROPE NETWORK OF EXCELLENCE
 
нижняя саксония
нижняя саксониянижняя саксония
нижняя саксония
 
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
 
Performance Test Driven Development (CEE SERC 2013 Moscow)
Performance Test Driven Development (CEE SERC 2013 Moscow)Performance Test Driven Development (CEE SERC 2013 Moscow)
Performance Test Driven Development (CEE SERC 2013 Moscow)
 
German Documentaries
German DocumentariesGerman Documentaries
German Documentaries
 
Performance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle CoherencePerformance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle Coherence
 

Similar to Борьба с GС паузами в JVM

Секреты сборки мусора в Java [DUMP-IT 2012]
Секреты сборки мусора в Java [DUMP-IT 2012]Секреты сборки мусора в Java [DUMP-IT 2012]
Секреты сборки мусора в Java [DUMP-IT 2012]aragozin
 
Секреты сборки мусора в Java
Секреты сборки мусора в JavaСекреты сборки мусора в Java
Секреты сборки мусора в Javaaragozin
 
Секреты сборки мусора в Java (Алексей Рагозин)
Секреты сборки мусора в Java (Алексей Рагозин)Секреты сборки мусора в Java (Алексей Рагозин)
Секреты сборки мусора в Java (Алексей Рагозин)Ontico
 
DUMP-2012 - Только хардкор! - "Секреты сборки мусора в Java" Алексей Рагозин
DUMP-2012 - Только хардкор! - "Секреты сборки мусора в Java" Алексей РагозинDUMP-2012 - Только хардкор! - "Секреты сборки мусора в Java" Алексей Рагозин
DUMP-2012 - Только хардкор! - "Секреты сборки мусора в Java" Алексей Рагозинit-people
 
Выявление неполадок в Java приложениях
Выявление неполадок в Java приложенияхВыявление неполадок в Java приложениях
Выявление неполадок в Java приложенияхPavel Grushetzky
 
MyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBMyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBSergey Petrunya
 
Маштабирование веб-приложений
Маштабирование веб-приложенийМаштабирование веб-приложений
Маштабирование веб-приложенийYandex
 
Контроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времениКонтроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времениSQALab
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012InTRUEdeR
 
Антон Наумович - Контроль качества и сопровождение в реальном времени
Антон Наумович - Контроль качества и сопровождение в реальном времениАнтон Наумович - Контроль качества и сопровождение в реальном времени
Антон Наумович - Контроль качества и сопровождение в реальном времениCOMAQA.BY
 
static - defcon russia 20
static  - defcon russia 20static  - defcon russia 20
static - defcon russia 20DefconRussia
 
Портирование C++ приложений на FLASCC: опыт Unreal Engine 3. Павел Наказненко...
Портирование C++ приложений на FLASCC: опыт Unreal Engine 3. Павел Наказненко...Портирование C++ приложений на FLASCC: опыт Unreal Engine 3. Павел Наказненко...
Портирование C++ приложений на FLASCC: опыт Unreal Engine 3. Павел Наказненко...Unigine Corp.
 
Dz Java Hi Load 0.4
Dz Java Hi Load 0.4Dz Java Hi Load 0.4
Dz Java Hi Load 0.4HighLoad2009
 
Олег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоОлег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоCodeFest
 
Почему вам еще рано в облако (Станислав Богатырев, Николай Двас)
Почему вам еще рано в облако (Станислав Богатырев, Николай Двас)Почему вам еще рано в облако (Станислав Богатырев, Николай Двас)
Почему вам еще рано в облако (Станислав Богатырев, Николай Двас)Ontico
 
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Ontico
 
C++ Core Guidelines
C++ Core Guidelines C++ Core Guidelines
C++ Core Guidelines Sergey Zubkov
 
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрsportgid
 

Similar to Борьба с GС паузами в JVM (20)

Секреты сборки мусора в Java [DUMP-IT 2012]
Секреты сборки мусора в Java [DUMP-IT 2012]Секреты сборки мусора в Java [DUMP-IT 2012]
Секреты сборки мусора в Java [DUMP-IT 2012]
 
Секреты сборки мусора в Java
Секреты сборки мусора в JavaСекреты сборки мусора в Java
Секреты сборки мусора в Java
 
Секреты сборки мусора в Java (Алексей Рагозин)
Секреты сборки мусора в Java (Алексей Рагозин)Секреты сборки мусора в Java (Алексей Рагозин)
Секреты сборки мусора в Java (Алексей Рагозин)
 
DUMP-2012 - Только хардкор! - "Секреты сборки мусора в Java" Алексей Рагозин
DUMP-2012 - Только хардкор! - "Секреты сборки мусора в Java" Алексей РагозинDUMP-2012 - Только хардкор! - "Секреты сборки мусора в Java" Алексей Рагозин
DUMP-2012 - Только хардкор! - "Секреты сборки мусора в Java" Алексей Рагозин
 
High Load
High LoadHigh Load
High Load
 
Выявление неполадок в Java приложениях
Выявление неполадок в Java приложенияхВыявление неполадок в Java приложениях
Выявление неполадок в Java приложениях
 
MyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBMyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDB
 
Маштабирование веб-приложений
Маштабирование веб-приложенийМаштабирование веб-приложений
Маштабирование веб-приложений
 
Контроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времениКонтроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времени
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012
 
Антон Наумович - Контроль качества и сопровождение в реальном времени
Антон Наумович - Контроль качества и сопровождение в реальном времениАнтон Наумович - Контроль качества и сопровождение в реальном времени
Антон Наумович - Контроль качества и сопровождение в реальном времени
 
static - defcon russia 20
static  - defcon russia 20static  - defcon russia 20
static - defcon russia 20
 
Портирование C++ приложений на FLASCC: опыт Unreal Engine 3. Павел Наказненко...
Портирование C++ приложений на FLASCC: опыт Unreal Engine 3. Павел Наказненко...Портирование C++ приложений на FLASCC: опыт Unreal Engine 3. Павел Наказненко...
Портирование C++ приложений на FLASCC: опыт Unreal Engine 3. Павел Наказненко...
 
Dz Java Hi Load 0.4
Dz Java Hi Load 0.4Dz Java Hi Load 0.4
Dz Java Hi Load 0.4
 
Олег Бартунов и Иван Панченко
Олег Бартунов и Иван ПанченкоОлег Бартунов и Иван Панченко
Олег Бартунов и Иван Панченко
 
Почему вам еще рано в облако (Станислав Богатырев, Николай Двас)
Почему вам еще рано в облако (Станислав Богатырев, Николай Двас)Почему вам еще рано в облако (Станислав Богатырев, Николай Двас)
Почему вам еще рано в облако (Станислав Богатырев, Николай Двас)
 
New Android NDK & JNI
New Android NDK & JNINew Android NDK & JNI
New Android NDK & JNI
 
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
 
C++ Core Guidelines
C++ Core Guidelines C++ Core Guidelines
C++ Core Guidelines
 
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
 

More from aragozin

Java on Linux for devs and ops
Java on Linux for devs and opsJava on Linux for devs and ops
Java on Linux for devs and opsaragozin
 
I know why your Java is slow
I know why your Java is slowI know why your Java is slow
I know why your Java is slowaragozin
 
Java profiling Do It Yourself (jug.msk.ru 2016)
Java profiling Do It Yourself (jug.msk.ru 2016)Java profiling Do It Yourself (jug.msk.ru 2016)
Java profiling Do It Yourself (jug.msk.ru 2016)aragozin
 
Java black box profiling JUG.EKB 2016
Java black box profiling JUG.EKB 2016Java black box profiling JUG.EKB 2016
Java black box profiling JUG.EKB 2016aragozin
 
Распределённое нагрузочное тестирование на Java
Распределённое нагрузочное тестирование на JavaРаспределённое нагрузочное тестирование на Java
Распределённое нагрузочное тестирование на Javaaragozin
 
Java profiling Do It Yourself
Java profiling Do It YourselfJava profiling Do It Yourself
Java profiling Do It Yourselfaragozin
 
DIY Java Profiler
DIY Java ProfilerDIY Java Profiler
DIY Java Profileraragozin
 
Java black box profiling
Java black box profilingJava black box profiling
Java black box profilingaragozin
 
Блеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшейБлеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшейaragozin
 
JIT compilation in modern platforms – challenges and solutions
JIT compilation in modern platforms – challenges and solutionsJIT compilation in modern platforms – challenges and solutions
JIT compilation in modern platforms – challenges and solutionsaragozin
 
Casual mass parallel computing
Casual mass parallel computingCasual mass parallel computing
Casual mass parallel computingaragozin
 
Nanocloud cloud scale jvm
Nanocloud   cloud scale jvmNanocloud   cloud scale jvm
Nanocloud cloud scale jvmaragozin
 
Tech talk network - friend or foe
Tech talk   network - friend or foeTech talk   network - friend or foe
Tech talk network - friend or foearagozin
 
Database backed coherence cache
Database backed coherence cacheDatabase backed coherence cache
Database backed coherence cachearagozin
 
ORM and distributed caching
ORM and distributed cachingORM and distributed caching
ORM and distributed cachingaragozin
 
Поиск на своем сайте, обзор open source решений
Поиск на своем сайте, обзор open source решенийПоиск на своем сайте, обзор open source решений
Поиск на своем сайте, обзор open source решенийaragozin
 
High Performance Computing - Cloud Point of View
High Performance Computing - Cloud Point of ViewHigh Performance Computing - Cloud Point of View
High Performance Computing - Cloud Point of Viewaragozin
 
Coherence SIG: Advanced usage of indexes in coherence
Coherence SIG: Advanced usage of indexes in coherenceCoherence SIG: Advanced usage of indexes in coherence
Coherence SIG: Advanced usage of indexes in coherencearagozin
 

More from aragozin (18)

Java on Linux for devs and ops
Java on Linux for devs and opsJava on Linux for devs and ops
Java on Linux for devs and ops
 
I know why your Java is slow
I know why your Java is slowI know why your Java is slow
I know why your Java is slow
 
Java profiling Do It Yourself (jug.msk.ru 2016)
Java profiling Do It Yourself (jug.msk.ru 2016)Java profiling Do It Yourself (jug.msk.ru 2016)
Java profiling Do It Yourself (jug.msk.ru 2016)
 
Java black box profiling JUG.EKB 2016
Java black box profiling JUG.EKB 2016Java black box profiling JUG.EKB 2016
Java black box profiling JUG.EKB 2016
 
Распределённое нагрузочное тестирование на Java
Распределённое нагрузочное тестирование на JavaРаспределённое нагрузочное тестирование на Java
Распределённое нагрузочное тестирование на Java
 
Java profiling Do It Yourself
Java profiling Do It YourselfJava profiling Do It Yourself
Java profiling Do It Yourself
 
DIY Java Profiler
DIY Java ProfilerDIY Java Profiler
DIY Java Profiler
 
Java black box profiling
Java black box profilingJava black box profiling
Java black box profiling
 
Блеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшейБлеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшей
 
JIT compilation in modern platforms – challenges and solutions
JIT compilation in modern platforms – challenges and solutionsJIT compilation in modern platforms – challenges and solutions
JIT compilation in modern platforms – challenges and solutions
 
Casual mass parallel computing
Casual mass parallel computingCasual mass parallel computing
Casual mass parallel computing
 
Nanocloud cloud scale jvm
Nanocloud   cloud scale jvmNanocloud   cloud scale jvm
Nanocloud cloud scale jvm
 
Tech talk network - friend or foe
Tech talk   network - friend or foeTech talk   network - friend or foe
Tech talk network - friend or foe
 
Database backed coherence cache
Database backed coherence cacheDatabase backed coherence cache
Database backed coherence cache
 
ORM and distributed caching
ORM and distributed cachingORM and distributed caching
ORM and distributed caching
 
Поиск на своем сайте, обзор open source решений
Поиск на своем сайте, обзор open source решенийПоиск на своем сайте, обзор open source решений
Поиск на своем сайте, обзор open source решений
 
High Performance Computing - Cloud Point of View
High Performance Computing - Cloud Point of ViewHigh Performance Computing - Cloud Point of View
High Performance Computing - Cloud Point of View
 
Coherence SIG: Advanced usage of indexes in coherence
Coherence SIG: Advanced usage of indexes in coherenceCoherence SIG: Advanced usage of indexes in coherence
Coherence SIG: Advanced usage of indexes in coherence
 

Борьба с GС паузами в JVM

  • 1. Russia Development Centre Deutsche Bank Deutsche Bank Group Technology & Operations Борьба с GC паузами в JVM Теория и Практика Алексей Рагозин, Deutsche Bank
  • 2. Russia Development Centre Deutsche Bank Содержание доклада Теория • Алгоритмы • Экономическая модель • Гипотеза о поколениях • Барьеры записи • Модель длительности пауз Практика • Алгоритмы HotSpot JVM • Concurrent Mark Sweep • Сайзинг JVM • Фрагментация памяти • Другие проблемы 
  • 3. Russia Development Centre Deutsche Bank Deutsche Bank Group Technology & Operations ТЕОРИЯ
  • 4. Russia Development Centre Deutsche Bank Терминология Stop-the-world (STW) pause – полная заморозка прикладных потоков JVM Compacting algorithms – алгоритмыперемещающиеобъектывпамятивоизбежаниефрагментации Parallel collection – использование многопоточности для сокращения STW паузы Concurrent collection – “фоновая” сбора мусора не требующая STW
  • 5. Russia Development Centre Deutsche Bank Как собрать “мусор”?  Подсчёт ссылок  Трассировка ссылок (обход графа)  А зачем собирать?
  • 6. Russia Development Centre Deutsche Bank Трассирующие алгоритмы Mark Sweep • Обойти граф, начиная с “корневых” ссылок • Отметить живые объекты • Просканировать память и собрать “мусор” Сборка копированием (copy collector) • Каждый достижимый объект туже копируется в новую область памяти • Ссылки на другие объекты корректируются при копировании Mark Sweep Compact • Mark Sweep + перемещение объектов в ходе sweep фазы
  • 7. Russia Development Centre Deutsche Bank Сборка копированием FROM TO roots
  • 8. Russia Development Centre Deutsche Bank Сборка копированием FROM TO roots FROM TO roots
  • 9. Russia Development Centre Deutsche Bank Сборка копированием FROM TO roots FROM TO roots 1
  • 10. Russia Development Centre Deutsche Bank Сборка копированием FROM TO roots FROM TO roots 1 2
  • 11. Russia Development Centre Deutsche Bank Сборка копированием FROM TO roots FROM TO roots 1 2
  • 12. Russia Development Centre Deutsche Bank Сборка копированием FROM TO roots FROM TO roots 1 23
  • 13. Russia Development Centre Deutsche Bank Экономика сборки мусора S – объём кучи L – объём живых объектов Copy collection  Эффективность Mark-Sweep  Эффективность L LS c S LS c L LS c 21 Объѐм мусора в куче
  • 14. Russia Development Centre Deutsche Bank Слабая гипотеза о поколениях Постулаты  Большинство объектов умирают молодыми  Число ссылок на молодые объекты мало Следствие Еслихранитьмолодыеобъектыотдельноотстарых,можнообеспечить высокую пропускную способность (молодое поколение) и эффективное использование памяти (старое поколение).
  • 15. Russia Development Centre Deutsche Bank Демография объектов в куче Смертность(байт/с) Возраст объектов Период молодой сборки Период старой сборки ∞
  • 16. Russia Development Centre Deutsche Bank Generational collection Молодое поколение  Сборщик настроен на пропускную способность Старое поколение  Сборщик настроен на эффективное использование памяти Продвижение (promotion) объектов в старое поколение  Сборщик молодого поколения копирует живые объекты в старое поколение после достижения “зрелого” возраста
  • 17. Russia Development Centre Deutsche Bank Generational collection Как получить все указатели из старого поколения на молодое? Ответ – барьер на запись Каждый раз при записи указателя в память в “старом” пространстве, срабатывает барьер
  • 18. Russia Development Centre Deutsche Bank Молодая сборка HotSpot JVM Eden S1 S2 Tenured Dirty cards Collect roots for young GC Scan stack traces Scan dirty pages in old space Сбор “корневых” ссылок
  • 19. Russia Development Centre Deutsche Bank Молодая сборка HotSpot JVM Eden S1 S2 Tenured Dirty cards Collect roots for young GC Clean cards Recursive copy of live objects (only live objects are traversed) Копирование живых объектов
  • 20. Russia Development Centre Deutsche Bank Молодая сборка HotSpot JVM Eden S1 S2 Tenured Dirty cards Сборка закончена Области памяти, не помеченные в таблице карт, не могут содержать ссылки на молодое поколение
  • 21. Russia Development Centre Deutsche Bank Фоновая маркировка Проблема  Граф объектов меняется по мере обхода * * Даже в функциональных языках могут выполняться отложенные вычисления, меняющие граф Решение  Барьер на запись – отслеживание ссылок изменившихся за время обхода
  • 22. Russia Development Centre Deutsche Bank Фоновая маркировка  Card marking write barrier HotSpot CMS, JRockit, IBM J9  Snapshot-at-the-beginning (SATB) write barrier HotSpot G1  Альтернатива барьерузаписи– барьер на чтении  Azul Zing JVM
  • 23. Russia Development Centre Deutsche Bank SATB барьер записи (G1) A B C D GC A C
  • 24. Russia Development Centre Deutsche Bank SATB барьер записи (G1) A B C D GC C D
  • 25. Russia Development Centre Deutsche Bank SATB барьер записи (G1) A B C D GC C D Reference queue: B DОчередь ссылок:
  • 26. Russia Development Centre Deutsche Bank SATB барьер записи (G1) A B C D GC C D
  • 27. Russia Development Centre Deutsche Bank SATB барьер записи (G1) A B C D GC D D
  • 28. Russia Development Centre Deutsche Bank SATB барьер записи (G1) A B C D GC Reference queue: B DОчередь ссылок:
  • 29. Russia Development Centre Deutsche Bank SATB барьер записи (G1) A B C D GC Reference queue: B D emptyОчередь ссылок: пусто
  • 30. Russia Development Centre Deutsche Bank Concurrent Mark Sweep [пауза] Сбор корневых ссылок [фон] Обход графа объектов [фон] Перемаркирова “грязных” страниц [паузa] Финальная перемаркирова [фон] Сканирование памяти (sweep)
  • 31. Russia Development Centre Deutsche Bank Длительность паузы (CMS) Young collection Scan thread stacks Scan dirty cards Read card table Scan dirty pages Copy live objects Initial mark Scan thread stacks Scan young space Remark Scan thread stacks Scan young space Scan dirty cards Read card table Scan dirty pages Пропорционально размеру старого поколения Стремится к константе с ростом размера старого поколения Пропорционально размеру старого поколения Стремится к константе с ростом размера старого поколения
  • 32. Russia Development Centre Deutsche Bank Эксперимент http://blog.ragozin.info/2011/07/openjdk-patch-cutting-down-gc-pause.html
  • 33. Russia Development Centre Deutsche Bank Другие компоненты паузы Время синхронизации в safe point Ожидание JNI блокировок Сканирование стека Обработка ссылок • Weak • Soft • JNI • Finalizers
  • 34. Russia Development Centre Deutsche Bank Deutsche Bank Group Technology & Operations Практика
  • 35. Russia Development Centre Deutsche Bank “Боевые” настройки JVM HotSpot JVM Concurrent Mark Sweep алгоритм Сайзинг памяти под приложение
  • 36. Russia Development Centre Deutsche Bank Сайзинг  -Xmx = -Xms  -Xmx = размер старого + размер молодого  -Xmn = размер молодого  Старое поколение:  Данные приложения (jmap –histo)  Запас 30-50% на фоновую сборку и фрагментацию
  • 37. Russia Development Centre Deutsche Bank Тонкая подстройка CMS  Поиск оптимальных параметров молодой сборки  -XX:CMSWaitDuration=N  -XX:+CMSScavengeBeforeRemark  Инкрементальный или нет?  Выгружать классы или нет? http://blog.ragozin.info/2011/07/gc-check-list-for-data-grid-nodes.html
  • 38. Russia Development Centre Deutsche Bank Фрагментация
  • 39. Russia Development Centre Deutsche Bank Фрагментация Последствия фрагментации  Однопоточный STM Mark Sweep Compact  Очень долгое promotion failure recovery Больше памяти – самый эффективный способ борьбы с фрагментацией
  • 40. Russia Development Centre Deutsche Bank Другие проблемы  Свопинг – (Javaисвопинг–вещинесовместные)  Reference abuse  Медленные сейвпоинты  Прямой доступ к памяти через JNI
  • 41. Russia Development Centre Deutsche Bank Deutsche Bank Group Technology & Operations Спасибо Алексей Рагозин, Deutsche Bank http://blog.ragozin.info - мои статьи о JVM и не только