У меня два вопроса. И один из них будет в тему :)
1) Я столкнулся с проблемой невозможности найти полную информацию о том, как работают разные сборщики мусора в HotSpot. Но я не говорю об общих описаниях работы сборщика мусора (у нас много такой информации в Интернете), я говорю о конкретных алгоритмах. Я нашел этот технический документ (Управление памятью в виртуальной машине Java HotSpot) http://www.oracle.com/technetwork/java/javase/tech/memorymanagement-whitepaper-1-150020.pdf. Но у него есть только общие идеи. В нем есть хорошее описание (вероятно, не очень хорошее - см. Мой второй вопрос) алгоритма параллельного уплотнения (я имею в виду параллельное сжатие с меткой-разверткой), но оно не объясняет другие алгоритмы сборщика мусора. Однако этот технический документ - лучшая информация, которую мне удалось найти в Интернете. Я хотел бы знать, где получить полное описание / информацию о том, как работают разные сборщики мусора (для молодого поколения я имею в виду: ParNew, DefNew, PSYoungGen; для старого поколения: PSOLdGen, ParOldGen, Concurrent-Mark-Sweep). Не могу поверить, что эта информация недоступна пользователям.
2) Вопрос по алгоритму Parallel Compacting Collector (ParOldGen или Parallel Mark-Sweep-Compact). В техническом документе (см. Первый вопрос) есть описание его работы. Позвольте мне вставить цитату из технического документа (пожалуйста, уделите минуту, чтобы взглянуть на него):
То, что я не могу понять, перечислено ниже:
Что касается итоговой фазы:
# P6 #
Что ж, означает ли это, что когда у нас есть область, которая состоит из 98-99% живых объектов и 2-1% мертвых объектов (другими словами, очень небольшой процент мертвых объектов), то уплотнение этой области не стоит пространство, которое можно было бы извлечь из такого региона. Однако эти крошечные свободные пространства (дыры) в конечном итоге будут заполнены, и после завершения сборки мусора дыр не останется.
# P8 #
ну, если у нас большой процент мертвых объектов, то эту область стоит уплотнять, не так ли?
# P10 #
«и никакие объекты не перемещаются в этих областях», но в этих областях может быть немного свободного места, я прав? Не могу понять сути
# P12 #
Уточните пожалуйста, как они будут уплотняться. Каждый регион будет уплотняться отдельно? Думаю, нет. Так что, может быть, здесь будет какое-то смещение?
# P14 #
Полагаю, чтобы понять это, мне нужно понять предыдущий вопрос.
Что касается фазы уплотнения:
# P17 #
Я совершенно запуталась. Значит, на «итоговой фазе» уплотнения не произошло? Была ли цель предыдущей фазы только найти все свободные места?
Пожалуйста, помогите мне получить четкое представление.