Como recuerdo, se supone que los recopiladores de copias deben ser compatibles con la paginación, ya que el rastreo mediante la copia tiende a mejorar la localidad de las referencias de puntero. Esto tiene un efecto positivo en el programa (mutador) que causará menos fallas de página al seguir los enlaces, y también mejorará el próximo ciclo de recolección ya que el rastreo también causará menos fallas de página. La agenda de rastreo (qué punteros deben procesarse primero) puede tener un impacto en la efectividad para mejorar la localidad de los datos. Esto puede mejorarse midiendo estadísticas sobre el número de acceso a diferentes punteros en diferentes tipos de celdas.
Ahora, si considera un recopilador de rastreo en general, generalmente debe mantener una estructura que haga un seguimiento de los punteros que aún no se han rastreado. Es posible organizar esta estructura para que todos los punteros en espera que apunten en la misma página se mantengan juntos (aunque eso puede tomar más espacio, en algunos casos, dependiendo de las técnicas disponibles para mantener la lista de dichos punteros). Entonces, una posible política es rastrear siempre el conjunto más grande de punteros de espera que apuntan a la misma página, cuando no queda ningún puntero de espera en las páginas de la memoria.
Con respecto a la pregunta en el tercer párrafo, que se agregó después de que respondí, la recopilación de copias es nuevamente una respuesta. El sistema operativo puede reducir el número de páginas físicas asignadas en el momento de la recopilación, ya que las páginas están completamente libres. Con un colector de marcas y barridos, el evento de que una página completa esté libre es probablemente mucho más raro, por lo que no vale la pena tener en cuenta un mecanismo específico.
Este tipo de ideas es natural, y probablemente se describe en algunos de los documentos. Pero no lo recuerdo de la mano. Creo que los primeros documentos sobre Lisp GC contienen algunas de estas ideas (como: ¿deberían seguirse primero el automóvil o el cdr?).
La buena noticia en este papel de la recopilación de copias también es que la paginación es fácil de copiar, ya que aumenta el espacio de almacenamiento disponible. Recuerde que el recopilador de copias requiere en principio el doble de espacio que el utilizado para el almacenamiento de datos real. Ahora, el efecto de la paginación depende también del espacio de direcciones de la máquina y de la memoria física disponible. En una computadora más antigua, la memoria física era mucho menor que el espacio de direcciones disponible, por lo que la paginación era realmente una bonificación de espacio, permitiendo políticas como copiar GC. Incluso cuando el espacio físico es tan grande como el espacio de direcciones, es posible que desee compartirlo, de modo que el proceso que usa un GC tenga menos espacio de direcciones sin paginación (consulte paginación) Estas observaciones son algo superadas por el uso de coleccionistas generacionales. Generalmente usan la colección de copias para la generación joven precisamente por estas cualidades, y porque la generación joven es principalmente de corta duración.
Entonces tiene todas las interacciones de GC generacional con el sistema de caché, que se discutió en una pregunta anterior: ¿Son los recolectores de basura generacionales inherentemente amigables con el caché?
Para obtener más información sobre este tema, buscaría en la web con, por ejemplo, las palabras clave recolección de basura y localidad .