Сборщик мусора - Garbage-first collector

В Сборщик мусора (G1) это вывоз мусора алгоритм введен в Oracle HotSpot Виртуальная машина Java (JVM) 6 и поддерживается 7 Обновление 4. Планировалось заменить Сборщик параллельных меток (CMS) в JVM 7 и по умолчанию в Java 9.[1]

Уборщик мусора

Сборщик мусора (G1) - это сервер сборщик мусора в стиле, предназначенный для мультипроцессоры с большим воспоминания, который встречает мягкий в реальном времени цель с большой вероятностью, при достижении высокая пропускная способность.[2] G1 предпочтительно собирает регионы с наименьшим объемом оперативных данных или «сначала мусор».[3] G1 - это долгосрочная замена CMS. Операции с целой кучей, такие как глобальная маркировка, выполняются одновременно с приложением. потоки, чтобы предотвратить прерывания, пропорциональные размеру кучи или оперативных данных. Одновременная маркировка обеспечивает как полноту сбора, так и идентифицирует области, созревшие для рекультивации, путем уплотнения и эвакуации. Эта эвакуация выполняется в параллельно на мультипроцессорах, чтобы уменьшить время пауз и увеличить пропускную способность.

G1 был впервые представлен как экспериментальный вариант в Java SE 6 Обновление 14,[4] где его можно включить с помощью следующих двух параметров командной строки:-XX: + UnlockExperimentalVMOptions и -XX: + UseG1GCВ JDK 7 планировалось, что G1 заменит CMS в JVM Hotspot. Между CMS и G1 есть два основных различия. Во-первых, G1 - это уплотнение коллектор.[5] G1 сжимается в достаточной степени, чтобы полностью избежать использования мелкозернистых свободных списков для размещения, что значительно упрощает части коллектора и в основном устраняет потенциальные фрагментация вопросы. Помимо сжатия, G1 предлагает более предсказуемые паузы при сборке мусора, чем сборщик CMS, и позволяет пользователям устанавливать желаемые цели паузы.

Предложения по Java 9 включил в себя превращение G1 в стандартный сборщик мусора с Google встречает известную CMS в качестве стандарта, утверждая, что модифицированная CMS, которую она использует, работает лучше, чем G1.[6]

В Java 9 G1 был сделан сборщиком мусора по умолчанию.[7][1]

Сопутствующие товары

Для гарантированного поведения в реальном времени даже со сборкой мусора требуется сборщик мусора в реальном времени, такой как те, которые поставляются с Sun Ява РТС[8] или же IBM С WebSphere RT.[9]

Смотрите также

Рекомендации

  1. ^ а б «JEP 248: сделать G1 сборщиком мусора по умолчанию». openjdk.java.net. Получено 2019-12-09.
  2. ^ Детлефс, Дэвид; Флуд, Кристина; Хеллер, Стив; Принтезис, Тони (2004). «Первый сбор мусора». Ismm'04: 37. CiteSeerX  10.1.1.63.6386. Дои:10.1145/1029873.1029879. ISBN  1581139454.
  3. ^ «Часть 1: Введение в сборщик мусора G1». www.redhat.com.
  4. ^ "G1: первый сборщик мусора Java". Доктор Доббс.
  5. ^ "Первый сборщик мусора". www.fasterj.com.
  6. ^ «Новый сборщик мусора Java 9: ​​что изменилось? Что осталось? - JAXenter». jaxenter.com. 26 июня 2015.
  7. ^ «Почему G1 является сборщиком мусора по умолчанию для Java 9?».
  8. ^ http://www.oracle.com/technetwork/articles/javase/index-138577.html Введение в технологию Java в реальном времени: Часть 2, Сборка мусора и система реального времени Sun Java (Java RTS)
  9. ^ http://www.ibm.com/developerworks/java/library/j-rtj4/index.html?S_TACT=105AGX02&S_CMP=EDU Сборка мусора в реальном времени

внешняя ссылка