сборка мусора одновременно - PullRequest
0 голосов
/ 29 декабря 2018

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

Я прочитал, что нам нужна CMS (алгоритм одновременной метки и очистки) для одновременной сборки мусора, которая является более сложной, чем простой алгоритм метки и разверткино в чем проблема с простым, который нам нужен CMS?

1 Ответ

0 голосов
/ 29 декабря 2018

Самая простая причина в том, что маркер может пропустить некоторые достижимые объекты, если путь к объекту изменяется.Рассмотрим следующую программу и сценарий:

a = new Object();
b = new Object();
b.c = new Object();
// gc process marks a, nothing reachable from a
a.c = b.c;
b.c = null;
// gc process marks b, nothing reachable from b
// marking phase completes, a.c is not marked
// gc sweeps a.c
print a.c; // safety violation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...