Некоторые языки, например Java, ввели GC с низкой паузой.
Эти GC могут сделать большую часть работы, не останавливая весь мир. Это, очевидно, довольно сложная проблема, потому что она требует анализа памяти, когда поток ее модифицирует, что приводит к получению данных, которые можно использовать в начале процесса, и не больше, когда он завершается, или к данным, которые кажутся ненужными, а потому, что ссылка была перенесена в память и никогда не появлялась там, где смотрел ГК.
Так в принципе, что за алгоритм (ы) за этим?
Исследовательские работы или действительно техническая ссылка на статью будут рассматриваться как правильный ответ, так как эта тема действительно техническая.
источник
Причина этого в том, что в Java только GC может освободить память, которая может содержать ссылки GC. Это означает, что до тех пор, пока вы можете безопасно читать объекты в отдельном потоке, вам нужно будет только приостановить программу, чтобы просмотреть ссылки в стеке.
Я предложил бы для мутации, чтобы они внедрили некоторую форму копирования при записи, чтобы сообщить GC об изменении.
источник