Como implementar um coletor de lixo?

Alguém poderia me indicar uma boa fonte de como implementar a coleta de lixo? Eu estou criando uma linguagem interpretada como lisp. Atualmente, ele usa contagem de referência, mas é claro que falha ao liberar objetos circularmente dependente

Eu tenho lido marcas de marcação e varredura, marcação tricolor, em movimento e sem movimento, incremental e parar o mundo, mas ... eu não sei qual a melhor maneira de manter os objetos ordenadamente separados em conjuntos, mantendo-os sobrecarga de memória no mínimo, ou como fazer as coisas de forma incrementa

Eu li alguns idiomas com contagem de referência que usam detecção de referência circular, que eu poderia usar. Estou ciente de que poderia usar colecionadores disponíveis gratuitamente, como o Boehm, mas gostaria de aprender como fazê-l

Eu apreciaria qualquer material on-line com algum tipo de tutorial ou ajuda para pessoas sem experiência no tópico como e

questionAnswers(8)

yourAnswerToTheQuestion