Como o GC atualiza referências após a compactação ocorrer?

O Coletor de Lixo do .NET coleta objetos (recupera sua memória) e também realiza compactação de memória (para manter a fragmentação de memória no mínimo).

Eu estou querendo saber, desde que uma aplicação pode ter muitas referências aos objetos, como o GC (ou o CLR) controla estas referências aos objetos, quando o endereço do objeto muda devido à compactação que está sendo feita pelo GC.

questionAnswers(3)

yourAnswerToTheQuestion