c++ - reciclaje - recoleccion de residuos caba
¿Cómo puedo experimentar con la recolección de basura? (7)
Divertido para jugar, pero la recolección de basura es un arte oscuro. No para que funcione, sino para que funcione con la eficiencia que las máquinas virtuales más recientes tienen.
Estamos hablando de etapas múltiples y magia que hace que las asignaciones de velocidad sean más comparables a las asignaciones de stack que malloc.
Todo el concepto de eden oscila.
Es posible que desee leer algunos documentos técnicos sobre las técnicas utilizadas.
Aquí hay un artículo que parece tener una buena visión general (solo a partir de un google / scan rápido)
Estoy interesado en cómo funciona la recolección de basura. He leído sobre algunos trabajos como marcar y borrar, detener y copiar, GC generacional, etc. Me gustaría experimentar con la implementación de algunos de ellos y comparar sus comportamientos. ¿Cuál es una buena manera de comenzar a experimentar con el mío? Idealmente, algo en C, Java o Python (aunque los dos últimos están recogidos de basura por lo que parece que sería difícil usarlos ...)
Implementa tu propia JVM. Nada elegante, solo lo básico. Hay muchos programas / compiladores / idiomas que generan código JVM, por lo que tiene mucho material para probar.
Nunca he jugado con él, pero el que siempre se menciona para su uso con C / C ++ es el de Hans Boehm .
el tiempo de ejecución de .NET y el tiempo de ejecución de Java ahora son de código abierto, por lo que puede experimentar con el tiempo de ejecución si quiere jugar con un lenguaje de programación de soporte actual. Sin embargo, si quisiera hacerlo usted mismo, probablemente tendría que crear su propio tiempo de ejecución que tenga su propio idioma.
Slava Pestov, que desarrolla el lenguaje de programación Factor, escribió una serie de publicaciones sobre su implementación de un recolector de basura. Puede encontrar publicaciones en este enlace:
http://factor-language.blogspot.com/search?q=garbage+collection
en particular, comience desde la publicación del domingo 24 de septiembre de 2006.
MMTk contiene un gran conjunto de recolectores de basura de alto rendimiento. Incluye:
- Copiar colectores
- Colectores de rastreo
- Recopiladores de recuento de referencia
También tiene:
- Detener a los coleccionistas del mundo
- Colectores concurrentes
Como se trata de una plataforma de investigación, tiene algunos recopiladores anticipados, como el colector de recuento de referencia de generación .