Секреты сборки мусора в  Java Алексей Рагозин [email_address]
О чём этот доклад? Обзор проблемы автоматического управления памятью Stop-the-world  паузы – причины Сборка мусора в современных  JVM
Сборка мусора Языки использующие автоматическое управление памятью Java, JavaScript, Erlang, Haskell, Python, PHP, C#, Ruby, Perl, SmallTalk, OCaml, List, Scala, ML, Go,   D, … …  and counting Языки   не использующие   автоматическое   управление   памятью C, C++, Pascal/Delphi, Objective-C Что я забыл ?
Способы сборки мусора Мусор – структура данных (объект) в памяти не достижимый из программного кода. Подсчёт ссылок Транзитивное замыкание ссылок   Вообще не собирать
Подсчёт ссылок Просто Не требует пауз для сбора мусора Не очищает циклические графы Дополнительные 15-30% нагрузки  CPU Плохо сочетается с много поточностью
Транзитивное замыкание ссылок Корневой набор ссылок Статические переменные Локальные переменные Объекты достижимые из корневых ссылок – живые Объекты недостижимые из корневых ссылок – мусор В общем случае ,  граф объектов не должен меняться по мере обхода. Следовательно ,  приложение должно быть остановлено пока идёт сборка мусора .
Алгоритмы сборки мусора Mark-Sweep Фаза 1 – маркировка достижимых объектов Фаза 2 –  “ вычистка ”  мусора Copy collector ( сборка копированием) Использует две области памяти, но выполняется в один проход Mark - Sweep - Compact Mark-Sweep +  перемещение живых объектов
Трёх цветная маркировка
Трёх цветная маркировка
Трёх цветная маркировка
Трёх цветная маркировка
Сборка копированием
Сборка копированием
Сборка копированием
Сборка копированием
Сборка копированием
Сборка копированием
Экономика сборки мусора S  –  объём кучи L  –  объём живых объектов Copy collection Эффективность Mark - Sweep Эффективность   Объём мусора в куче
Слабая гипотеза о поколениях Постулаты Большинство объектов умирают молодыми Число ссылок на молодые объекты мало Следствие Если хранить молодые и старые объекты отдельно, можно обеспечить высокую пропускную способность (молодое поколение) и эффективное использование памяти (старое поколение) .
Демография объектов в куче
Generational collection Молодое поколение Сборщик настроен на пропускную способность Старое поколение Сборщик настроен на эффективное использование памяти Продвижение ( promotion)  объектов в старое поколение Сборщик молодого поколения копирует живые объекты в старое поколение после достижения  “ зрелого ”  возраста
Generational collection Как получить все указатели из старого поколения на молодое? Ответ -  write barrier   Каждый раз при записи указателя в память в  “ старом ”  пространстве, срабатывает барьер
Молодая сборка  HotSpot JVM Сбор  “ корневых ”  ссылок
Молодая сборка  HotSpot JVM Копирование живых объектов
Молодая сборка  HotSpot JVM Сборка закончена Области памяти ,  не помеченные в таблице карт ,   не могут содержать ссылки на молодое поколение
Stop-the-world  паузы Изменение графа объектов во время обхода может привести к пропуску достижимых объектов Большинство  managed runtimes  может перемещать объекты только в режиме паузы
Stop-the-world  паузы Параллельные  (parallel)  алгоритмы Используют несколько потоков чтобы сократить время пауз Конкурентные ( concurrent)  алгоритмы Выполняют большую часть работы в фоновом режиме (без  STW  пауз) Инкрементальные алгоритмы Много маленьких  STW  вместо одной длитетьной
Concurrent marking Проблема Граф объектов меняется по мере обхода  * *  Даже в функциональных языках могут выполняться отложенные вычисления ,  меняющие граф Решение write-barrier –  отслеживать ссылки изменившиеся за время обхода
Concurrent marking Card marking write barrier HotSpot CMS, JRockit, IBM J9 Snapshot-at-the-beginning  (SATB) write barrier HotSpot G1 Read barrier  ( помечать объекты как живые при чтении) Azul Zing JVM
SATB write barrier (G1)
SATB write barrier (G1)
STAB write barrier (G1)
STAB write barrier (G1)
SATB write barrier (G1)
SATB write barrier (G1)
SATB write barrier (G1)
Card marking write barrier [ пауза ]  Сбор корневых ссылок [ фон ]  Обход графа объектов [ фон ]  Перемаркирова  “ грязных ”  страниц [ пауз a]  Финальная перемаркирова
Перемещение объектов Большинство  JVM  не могут перемещать объекты без  STW  паузы.  Цель – уменьшение длительности пауз Параллельная обработка (задействовать все ядра) Инкрементальное уплотнение (чаще ,  но короче) Не уплотнять – опасность фрагментации
Oracle HotSpot Default (serial) collector Young:  Serial copy collector,  Old:  serial MSC Parallel scavenge / Parallel old GC Young:  Parallel copy collector,  Old:  serial MSC or parallel MSC Concurrent mark sweep (CMS) Young:  Serial or parallel copy collector,  Old:  concurrent mark sweep G1 (garbage first) Young:  Copy collector (region based)  Old:  Incremental MSC http://aragozin.blogspot.com/2011/0 9 /hotspot-jvm-garbage-collection-options.html
Oracle’s HotSpot JVM http://aragozin.blogspot.com/2011/0 9 /hotspot-jvm-garbage-collection-options.html
Oracle JRockit http:// aragozin.blogspot.com/2011/07/jrockit-gc-in-action.html -Xgc:  option Generational Mark Sweep/Compact genconcon  or  gencon Yes concurrent incremental singleconcon  or  singlecon No concurrent incremental genconpar Yes concurrent parallel singleconpar No concurrent parallel genparpar  or  genpar Yes parallel parallel singleparpar  or  singlepar No parallel parallel genparcon Yes parallel incremental singleparcon No parallel incremental
IBM J9 -Xgcpolicy:optthruput  Одно поколение , stop-the-world  сборщик -Xgcpolicy:optavgpause Одно поколение ,  частично   конкурентный сборщик -Xgcpolicy:gencon Два поколения, частично конкурентный сборщик
Azul Zing Два поколения Молодое поколение  –  конкурентный  mark-sweep-compact (MSC) Старое   поколение  –  конкурентный  mark-sweep-compact (MSC) Azul   Zing  выполняет перемещение объектов (уплотнение памяти) без останова приложения. Ни одна из фаз сборки мусора не требует  STW  паузы .  Секрет –   read barrier.
Масштабируемость  JVM Может ли  JVM  работать с большим объёмом памяти  (16GiB  и более) без  “ фризов ”? Ответ  да , если приложение удовлетворяет постулатам гипотезы о поколениях.
Рецепт работы без пауз HotSpot JVM CMS  ( Concurrent Mark Sweep)  сборщик мусора Тюнинг Результат Паузы не более 150 ms  на 32 GiB  хипа
HotSpot CMS  сборщик Сборка молодого поколения копированием Не перемещает объекты в старом поколении Статистические методы борьбы с фрагментацией Две дополнительные  STW  фазы initial-mark, remark Вся остальная работа происходит в фоне
Длительность пауз  CMS  сборщика
Можно лучше –  OpenJDK  патч http://aragozin.blogspot.com/2011/07/openjdk-patch-cutting-down-gc-pause.html
Сборка мусора в  JVM Сборка мусора  не  чёрная магия Каждое приложение  индивидуально Приложение  не должно мешать  сборщику мусора JVM  может работать  без пауз   (с паузами не более 100 -200ms) Автоматическое управление памятью  не универсально (Проблемные приложения :   HBase, Cassandra)
Альтернативы java.nio.ByteBuffer.allocateDirect() Pro Memory is allocated out of heap Memory is deallocated when  ByteBuffer  is collected Cross platform, native java Con Fragmentation of non-heap memory Memory is deallocated when  ByteBuffer  is collected Complicated multi thread programming -XX:MaxDirectMemorySize=<value>
Альтернативы Real Time System Java Иерархия регионов памяти Объекты выделяются в выбранном регионе Локальные и  “ бессмертные ”  регионы не собираются Локальные регионы освобождаются целиком Глобальные объекты не могу ссылаться на локальные
Альтернативы Unsafe java sun.misc.Unsafe Unsafe.allocateMemory(…) Unsafe.reallocateMemory(…) Unsafe.freeMemory(…)
Спасибо Алексей Рагозин   [email_address] http://aragozin.blogspot.com -  мои статьи о  JVM  и не только

More Related Content

PPTX
Expert Java Day: Java concurrency
PDF
"G1 GC и Обзор сборки мусора в HotSpot JVM" @ JUG SPb, 31-05-2012
PDF
Cборка мусора в Java без пауз (HighLoad++ 2013)
PPTX
Алексей Рагозин (Deutsche Bank)
PDF
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
PPT
Секреты сборки мусора в Java (Алексей Рагозин)
PDF
Секреты сборки мусора в Java [DUMP-IT 2012]
PDF
Дмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решения
Expert Java Day: Java concurrency
"G1 GC и Обзор сборки мусора в HotSpot JVM" @ JUG SPb, 31-05-2012
Cборка мусора в Java без пауз (HighLoad++ 2013)
Алексей Рагозин (Deutsche Bank)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
Секреты сборки мусора в Java (Алексей Рагозин)
Секреты сборки мусора в Java [DUMP-IT 2012]
Дмитрий Грошев, Фёдор Гоголев. Erlang и Haskell в production: проблемы и решения

What's hot (20)

PPT
DUMP-2012 - Только хардкор! - "Секреты сборки мусора в Java" Алексей Рагозин
PDF
Павел Довгалюк, Обратная отладка
PDF
PPTX
FreeRTOS
PDF
Caching data outside Java Heap and using Shared Memory in Java
PDF
In the sun.misc.Unsafe bowels
PPT
Presentation_1369080393540
PDF
Scala performance под капотом
PDF
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
PDF
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PPT
Системы контроля версий
PDF
Борис Сазонов, RAII потоки и CancellationToken в C++
PDF
Шишки, набитые за 15 лет использования акторов в C++
PDF
Multithreading in JS. Myth or reality?
PDF
WebCamp2016:Front-End.Максим Климишин.Теоретические и практические концепции ...
PPTX
Александр Фокин, Рефлексия в C++
PDF
WebCamp 2016: Python.Максим Климишин.Типизированный Python
PDF
Для чего мы делали свой акторный фреймворк и что из этого вышло?
PPTX
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
PDF
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
DUMP-2012 - Только хардкор! - "Секреты сборки мусора в Java" Алексей Рагозин
Павел Довгалюк, Обратная отладка
FreeRTOS
Caching data outside Java Heap and using Shared Memory in Java
In the sun.misc.Unsafe bowels
Presentation_1369080393540
Scala performance под капотом
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Системы контроля версий
Борис Сазонов, RAII потоки и CancellationToken в C++
Шишки, набитые за 15 лет использования акторов в C++
Multithreading in JS. Myth or reality?
WebCamp2016:Front-End.Максим Климишин.Теоретические и практические концепции ...
Александр Фокин, Рефлексия в C++
WebCamp 2016: Python.Максим Климишин.Типизированный Python
Для чего мы делали свой акторный фреймворк и что из этого вышло?
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
Ad

Viewers also liked (11)

PPT
Java. Сборщик мусора. Работа с памятью.
PPT
Java. Переменные, типы данных, операторы
PPT
Java. Cистемы счислния, битовые операции
PPT
Java. Конструкторы класса и инициализация
PPT
Java. Строки. Класс String.
PPT
Java. Инкапсуляция.
PPT
Java. Логические операторы, операторы ветвления.
PPT
Алгоритмы поиска и сортировки
PPT
Java. Циклы.
PPT
Java. Методы
PPT
Java. Массивы. Многомерные массивы.
Java. Сборщик мусора. Работа с памятью.
Java. Переменные, типы данных, операторы
Java. Cистемы счислния, битовые операции
Java. Конструкторы класса и инициализация
Java. Строки. Класс String.
Java. Инкапсуляция.
Java. Логические операторы, операторы ветвления.
Алгоритмы поиска и сортировки
Java. Циклы.
Java. Методы
Java. Массивы. Многомерные массивы.
Ad

Similar to Секреты сборки мусора в Java (19)

PPTX
Борьба с GС паузами в JVM
PPT
An internal look at HotSpot JVM
PDF
Garbage collection in V8 VM
PPTX
Performance optimization effective interaction with virtual machine
PDF
20100307 virtualization igotti_lecture04
PPTX
Внутреннее устройство GC
PPTX
Solit 2013, JVM изнутри: оптимизация и профилирование, Слисенко Константин
PDF
Алексей Рагозин
PDF
"Диагностирование проблем и настройка GC в HotSpot JVM" (JEEConf, Киев, 2011)
PDF
Насорил - убери!
PDF
Automated Memory Management for C++
PPTX
Dz Java Hi Load 0.4
PPTX
Performance optimization: effective interaction with virtual machine
PDF
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
PDF
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
PDF
Память в Java. Garbage Collector
PDF
Выявление неполадок в Java приложениях
PDF
Об одной неприятной проблеме сборщика Concurrent Mark-Sweep, Кирилл Голоднов
Борьба с GС паузами в JVM
An internal look at HotSpot JVM
Garbage collection in V8 VM
Performance optimization effective interaction with virtual machine
20100307 virtualization igotti_lecture04
Внутреннее устройство GC
Solit 2013, JVM изнутри: оптимизация и профилирование, Слисенко Константин
Алексей Рагозин
"Диагностирование проблем и настройка GC в HotSpot JVM" (JEEConf, Киев, 2011)
Насорил - убери!
Automated Memory Management for C++
Dz Java Hi Load 0.4
Performance optimization: effective interaction with virtual machine
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
Память в Java. Garbage Collector
Выявление неполадок в Java приложениях
Об одной неприятной проблеме сборщика Concurrent Mark-Sweep, Кирилл Голоднов

More from aragozin (20)

PDF
Java on Linux for devs and ops
PDF
I know why your Java is slow
PPTX
Java profiling Do It Yourself (jug.msk.ru 2016)
PDF
Java black box profiling JUG.EKB 2016
PDF
Распределённое нагрузочное тестирование на Java
PDF
What every Java developer should know about network?
PPTX
Java profiling Do It Yourself
PPTX
DIY Java Profiler
PPTX
Java black box profiling
PDF
Блеск и нищета распределённых кэшей
PDF
JIT compilation in modern platforms – challenges and solutions
PDF
Casual mass parallel computing
PPTX
Nanocloud cloud scale jvm
PDF
Java GC tuning and monitoring (by Alexander Ashitkin)
PDF
Garbage collection in JVM
PDF
Virtualizing Java in Java (jug.ru)
PDF
Filtering 100M objects in Coherence cache. What can go wrong?
PDF
Performance Test Driven Development (CEE SERC 2013 Moscow)
PDF
Performance Test Driven Development with Oracle Coherence
PPTX
Распределённый кэш или хранилище данных. Что выбрать?
Java on Linux for devs and ops
I know why your Java is slow
Java profiling Do It Yourself (jug.msk.ru 2016)
Java black box profiling JUG.EKB 2016
Распределённое нагрузочное тестирование на Java
What every Java developer should know about network?
Java profiling Do It Yourself
DIY Java Profiler
Java black box profiling
Блеск и нищета распределённых кэшей
JIT compilation in modern platforms – challenges and solutions
Casual mass parallel computing
Nanocloud cloud scale jvm
Java GC tuning and monitoring (by Alexander Ashitkin)
Garbage collection in JVM
Virtualizing Java in Java (jug.ru)
Filtering 100M objects in Coherence cache. What can go wrong?
Performance Test Driven Development (CEE SERC 2013 Moscow)
Performance Test Driven Development with Oracle Coherence
Распределённый кэш или хранилище данных. Что выбрать?

Секреты сборки мусора в Java

  • 1. Секреты сборки мусора в Java Алексей Рагозин [email_address]
  • 2. О чём этот доклад? Обзор проблемы автоматического управления памятью Stop-the-world паузы – причины Сборка мусора в современных JVM
  • 3. Сборка мусора Языки использующие автоматическое управление памятью Java, JavaScript, Erlang, Haskell, Python, PHP, C#, Ruby, Perl, SmallTalk, OCaml, List, Scala, ML, Go, D, … … and counting Языки не использующие автоматическое управление памятью C, C++, Pascal/Delphi, Objective-C Что я забыл ?
  • 4. Способы сборки мусора Мусор – структура данных (объект) в памяти не достижимый из программного кода. Подсчёт ссылок Транзитивное замыкание ссылок Вообще не собирать
  • 5. Подсчёт ссылок Просто Не требует пауз для сбора мусора Не очищает циклические графы Дополнительные 15-30% нагрузки CPU Плохо сочетается с много поточностью
  • 6. Транзитивное замыкание ссылок Корневой набор ссылок Статические переменные Локальные переменные Объекты достижимые из корневых ссылок – живые Объекты недостижимые из корневых ссылок – мусор В общем случае , граф объектов не должен меняться по мере обхода. Следовательно , приложение должно быть остановлено пока идёт сборка мусора .
  • 7. Алгоритмы сборки мусора Mark-Sweep Фаза 1 – маркировка достижимых объектов Фаза 2 – “ вычистка ” мусора Copy collector ( сборка копированием) Использует две области памяти, но выполняется в один проход Mark - Sweep - Compact Mark-Sweep + перемещение живых объектов
  • 18. Экономика сборки мусора S – объём кучи L – объём живых объектов Copy collection Эффективность Mark - Sweep Эффективность Объём мусора в куче
  • 19. Слабая гипотеза о поколениях Постулаты Большинство объектов умирают молодыми Число ссылок на молодые объекты мало Следствие Если хранить молодые и старые объекты отдельно, можно обеспечить высокую пропускную способность (молодое поколение) и эффективное использование памяти (старое поколение) .
  • 21. Generational collection Молодое поколение Сборщик настроен на пропускную способность Старое поколение Сборщик настроен на эффективное использование памяти Продвижение ( promotion) объектов в старое поколение Сборщик молодого поколения копирует живые объекты в старое поколение после достижения “ зрелого ” возраста
  • 22. Generational collection Как получить все указатели из старого поколения на молодое? Ответ - write barrier Каждый раз при записи указателя в память в “ старом ” пространстве, срабатывает барьер
  • 23. Молодая сборка HotSpot JVM Сбор “ корневых ” ссылок
  • 24. Молодая сборка HotSpot JVM Копирование живых объектов
  • 25. Молодая сборка HotSpot JVM Сборка закончена Области памяти , не помеченные в таблице карт , не могут содержать ссылки на молодое поколение
  • 26. Stop-the-world паузы Изменение графа объектов во время обхода может привести к пропуску достижимых объектов Большинство managed runtimes может перемещать объекты только в режиме паузы
  • 27. Stop-the-world паузы Параллельные (parallel) алгоритмы Используют несколько потоков чтобы сократить время пауз Конкурентные ( concurrent) алгоритмы Выполняют большую часть работы в фоновом режиме (без STW пауз) Инкрементальные алгоритмы Много маленьких STW вместо одной длитетьной
  • 28. Concurrent marking Проблема Граф объектов меняется по мере обхода * * Даже в функциональных языках могут выполняться отложенные вычисления , меняющие граф Решение write-barrier – отслеживать ссылки изменившиеся за время обхода
  • 29. Concurrent marking Card marking write barrier HotSpot CMS, JRockit, IBM J9 Snapshot-at-the-beginning (SATB) write barrier HotSpot G1 Read barrier ( помечать объекты как живые при чтении) Azul Zing JVM
  • 37. Card marking write barrier [ пауза ] Сбор корневых ссылок [ фон ] Обход графа объектов [ фон ] Перемаркирова “ грязных ” страниц [ пауз a] Финальная перемаркирова
  • 38. Перемещение объектов Большинство JVM не могут перемещать объекты без STW паузы. Цель – уменьшение длительности пауз Параллельная обработка (задействовать все ядра) Инкрементальное уплотнение (чаще , но короче) Не уплотнять – опасность фрагментации
  • 39. Oracle HotSpot Default (serial) collector Young: Serial copy collector, Old: serial MSC Parallel scavenge / Parallel old GC Young: Parallel copy collector, Old: serial MSC or parallel MSC Concurrent mark sweep (CMS) Young: Serial or parallel copy collector, Old: concurrent mark sweep G1 (garbage first) Young: Copy collector (region based) Old: Incremental MSC http://aragozin.blogspot.com/2011/0 9 /hotspot-jvm-garbage-collection-options.html
  • 40. Oracle’s HotSpot JVM http://aragozin.blogspot.com/2011/0 9 /hotspot-jvm-garbage-collection-options.html
  • 41. Oracle JRockit http:// aragozin.blogspot.com/2011/07/jrockit-gc-in-action.html -Xgc: option Generational Mark Sweep/Compact genconcon or gencon Yes concurrent incremental singleconcon or singlecon No concurrent incremental genconpar Yes concurrent parallel singleconpar No concurrent parallel genparpar or genpar Yes parallel parallel singleparpar or singlepar No parallel parallel genparcon Yes parallel incremental singleparcon No parallel incremental
  • 42. IBM J9 -Xgcpolicy:optthruput Одно поколение , stop-the-world сборщик -Xgcpolicy:optavgpause Одно поколение , частично конкурентный сборщик -Xgcpolicy:gencon Два поколения, частично конкурентный сборщик
  • 43. Azul Zing Два поколения Молодое поколение – конкурентный mark-sweep-compact (MSC) Старое поколение – конкурентный mark-sweep-compact (MSC) Azul Zing выполняет перемещение объектов (уплотнение памяти) без останова приложения. Ни одна из фаз сборки мусора не требует STW паузы . Секрет – read barrier.
  • 44. Масштабируемость JVM Может ли JVM работать с большим объёмом памяти (16GiB и более) без “ фризов ”? Ответ да , если приложение удовлетворяет постулатам гипотезы о поколениях.
  • 45. Рецепт работы без пауз HotSpot JVM CMS ( Concurrent Mark Sweep) сборщик мусора Тюнинг Результат Паузы не более 150 ms на 32 GiB хипа
  • 46. HotSpot CMS сборщик Сборка молодого поколения копированием Не перемещает объекты в старом поколении Статистические методы борьбы с фрагментацией Две дополнительные STW фазы initial-mark, remark Вся остальная работа происходит в фоне
  • 47. Длительность пауз CMS сборщика
  • 48. Можно лучше – OpenJDK патч http://aragozin.blogspot.com/2011/07/openjdk-patch-cutting-down-gc-pause.html
  • 49. Сборка мусора в JVM Сборка мусора не чёрная магия Каждое приложение индивидуально Приложение не должно мешать сборщику мусора JVM может работать без пауз (с паузами не более 100 -200ms) Автоматическое управление памятью не универсально (Проблемные приложения : HBase, Cassandra)
  • 50. Альтернативы java.nio.ByteBuffer.allocateDirect() Pro Memory is allocated out of heap Memory is deallocated when ByteBuffer is collected Cross platform, native java Con Fragmentation of non-heap memory Memory is deallocated when ByteBuffer is collected Complicated multi thread programming -XX:MaxDirectMemorySize=<value>
  • 51. Альтернативы Real Time System Java Иерархия регионов памяти Объекты выделяются в выбранном регионе Локальные и “ бессмертные ” регионы не собираются Локальные регионы освобождаются целиком Глобальные объекты не могу ссылаться на локальные
  • 52. Альтернативы Unsafe java sun.misc.Unsafe Unsafe.allocateMemory(…) Unsafe.reallocateMemory(…) Unsafe.freeMemory(…)
  • 53. Спасибо Алексей Рагозин [email_address] http://aragozin.blogspot.com - мои статьи о JVM и не только