2015-03-31 2 views
2

Я проходил через ссылку Java - available garbage collection algorithms, чтобы понять, насколько доступен алгоритм сбора мусора JVM и запутался.нужна помощь для понимания доступных JVM «Алгоритм сбора мусора» и «Сборщик мусора»

В соответствии с моим пониманием будет создан стандартный алгоритм GC, который реализуют различные поставщики JVM для создания сборщика мусора.

Теперь, пожалуйста, помогите мне понять, ниже ли алгоритм или реализация алгоритма:

  1. Последовательная,
  2. Parallel,
  3. CMS,
  4. G1,

Я подумайте, что это типы сборщиков мусора, которые реализуют определенный алгоритм (название алгоритмов, которые я не знаю).

Также я просматривал белую бумагу, опубликованную на http://www.oracle.com/technetwork/java/javase/tech/memorymanagement-whitepaper-1-150020.pdf относительно коллекции мусора JVM, но не смог получить четкую разницу между алгоритмом сбора мусора и сборщиком мусора.

В некоторых случаях упоминается документ «Алгоритм сбора мусора для молодых поколений/Алгоритм сбора мусора старого поколения».

Это означает, что серийный сборщик мусора (тип сборщика мусора) использует «алгоритм сбора мусора молодого поколения», а также «алгоритм сбора старого мусора» для выполнения GC на территории молодого и старого поколения соответственно.

Пожалуйста, помогите мне получить четкое представление о типе алгоритма и типе сборщика мусора.

+1

Все, что вам нужно знать о GC (и немного больше): http://mechanical-sympathy.blogspot.com/2013/07/java-garbage-collection -distilled.html – assylias

ответ

2

Уфф позвольте мне попытаться объяснить это как-то :)

Коллектор мусора может иметь различные алгоритмы - такие, как Марк & свипирования, Марк & Compact, Reference Counting и т.д. - (Usally решает, как производительный ваша система а также объем вашего приложения). Приложения создают объекты в куче. Поскольку большинство из этих объектов умирают молодыми, куча будет разделена на две основные области: Молодое поколение и старое поколение. Объекты всегда будут приземляться сначала в молодой генеалогии. Там у вас есть алгоритмы, которые затем будут продвигать некоторые из объектов в старое поколение. Поскольку обработка объектов старого поколения обычно требует больших результатов, цель - позволить объектам умереть как можно моложе. (Это объясняется очень основательно - молодое поколение также разделено на Eden and Survivor Space - поэтому я пытаюсь дать простой обзор).

Таким образом, сборщик мусора использует разные алгоритмы для разных генов (молодых и старых). Кроме того, вы не только отделяетесь алгоритмами, но и тем, как они выполняются: Последовательный, параллельный, параллельный ... и т. Д.

Последовательный

Средства мусора colletor работает в последовательном режиме. Последовательный режим будет использоваться, если у вас есть только на ядре. Если вы используете серийный номер, сборщик мусора останавливает мир (stw phase) и очищает объекты в куче. Это может снизить производительность вашего приложения.

Параллельный

Сборщик colletor работает в параллельном режиме. Этот режим использует преимущества многоядерных систем. Таким образом, задача очистки кучи выполняется в потоках. Таким образом сборщик мусора требует меньше времени для очистки кучи. Но у вас все еще будут stw-фазы, но они занимают меньше времени.

CMS - Параллельное

Этот мусор colletor работает в параллельном режиме. Итак, на некоторых этапах сборщика мусора задачи запускаются рядом с приложением. Например Параллельное Марк & Swepp:

Initial Mark Phase - Серийный

Mark Phase - Параллельное

Примечание Фаза - Параллельный

развертки фазы - Параллельное

В параллельных фазах вы не будет иметь фаз STW.

G1

Есть специальный мусор colletor, разработанный SUN (или это IBM?). В настоящее время все алгоритмы имеют Stop-The-World - этапы. С G1 они пытались сказать, как долго будут проходить эти этапы. Это действительно сложный алгоритм, но и с этим невозможно сказать, сколько времени займет stw-фаза.

+0

Приятно видеть, что вы включили множество вопросов относительно JVM GC. Из вашего ответа, что я получил: 1. Жизненный цикл объекта и их распределение, например, от Eden до Survivor space до старого поколения. 2. Некоторые алгоритмы GC, такие как mark & ​​sweep, mark & ​​compact, подсчет ссылок и т. Д. 3. Типы сборщиков мусора, такие как серийный, параллельный, CMS и G1. Но все-таки я не совсем понимаю, какой тип алгоритма используется для разных GC, таких как serial, parallel, CMS (возможно, это использует метку и прокрутку alogrithm) и G1. Было бы полезно, если бы вы могли добавить эту часть также –

2

Что я думаю, это типы сборщиков мусора, которые реализуют определенный алгоритм (имя алгоритмов, которые я не знаю).

те, которые вы перечислены обычно используются в качестве имен для конкретных реализаций GC в контексте Oracle HotSpot JVM, все специфические для реализации деталей с, параметры настройки и т.д., и других реальных странностей они влекут за собой. Конечно, они также основаны на абстрактных алгоритмах, которые могут делиться своими именами или могут быть описаны в некоторых научных публикациях, замаскированных деталями и просто моделирующих их теоретическое поведение.

Различие не всегда так ясно. Серийный GC - самый примитивный алгоритм: mark-sweep, stop-the-world, single-threaded. В зависимости от JVM это может быть или не быть уплотнением. Если я правильно помню, то старшие андроидные виртуальные машины не преуспели в их серийной реализации GC.

Так или иначе, номенклатура контекстно-зависимая. Если вы читаете исследовательскую статью о параллельном параллельном, компактирующем, параллельном, беспроблемном коллекционере, это не относится к пропускной способности хот-спота (параллельный старый ген), параллельному выпуску (параллельное молодое поколение) или парному (коллектив молодого поколения, сотрудничающий с CMS для старый ген), потому что упоминается слово parallel. Если вы читаете, возможно, сообщение в блоге, описывающее характеристики производительности конкретных GC с фактическими измерениями, они, вероятно, относятся к реализациям топовых точек.

Here's a list of hotspot's collectors and their relations, могут изменяться в связи с pending JEPs

Смежные вопросы