[Java] Реализации GC в VM

aleks058

В .Net устройство сборщика мусора я себе вполне представляю.
Упрощенно примерно так: в определенные моменты процесс GC просматривает все объекты и если находит графы объектов, не соединенные с корневыми объектами, удаляет их.
А как устроен GC в распространенных реализациях VM Java?
Бывают ли со счетчиками ссылок и как там борются с циклическими ссылками?
Идея принципа работы GC в .Net содрана с какой-нибудь известной реализации GC в Java?
Слышал про real-time Java VM. Как там работает GC, ведь время его работы жестко ограничено? Что происходит, если GC "не успевает"?

bobby

Вот тут почитай.
Правда, там как-то хреново написано

vall

link

Hastya

Все гораздо сложнее, чем просто подсчет ссылок. В 1.5 используется т.н. алгоритм mark sweep:
web page
Есть еще специальные виды ссылок, типа SoftReference, PhantomReference и тп.

agaaaa

для расширения собственной эрудиции прошу выложить ссылку на описание принципа (желательно подробное) работы .Net GC

Papazyan

Идея принципа работы GC в .Net содрана с какой-нибудь известной реализации GC в Java?
Слышал про real-time Java VM. Как там работает GC, ведь время его работы жестко ограничено? Что происходит, если GC "не успевает"?
Блин, алгоритмы GC изобретают не в Sun или Microsoft. Все эти примитивные Mark&Sweep уже сто лет как известны.
Real time GC просто выполняют тоже самое, что обычные GC, только их работа размазана во времени, если говорить по простому. Например, алгоритм, где сначала объекты помечаются, а потом непомеченные удаляются, легко приспособить для real time. Есть и более сложные подходы, в этой книге, в частности, описаны:
Garbage Collection Algorithms for Automatic Memory Management , Richard Jones, Rafael Lins.
Оставить комментарий
Имя или ник:
Комментарий: