Pregunta

Tagged punteros son una optimización común en la aplicación de los lenguajes dinámicos: se aprovechan de las necesidades de alineación que significan la baja dos o tres trozos de un puntero siempre será cero, y las usan para información de tipo de almacén

.

Supongamos que está utilizando el recolector de basura de Boehm, que funciona básicamente mirando los datos activos para las cosas que se parecen a los punteros. Tagged punteros no se parecen a los punteros, en el sentido de que sus bajas bits son distintos de cero.

Es esto algo sensacional, es decir, qué tiene que zanja etiquetado punteros si está usando Boehm? ¿O tiene una solución a este problema?

¿Fue útil?

Solución

Que yo sepa Boehm puede manejar esto con las opciones correctas. Es capaz, en un pequeño precio, para detectar punteros interiores. También es posible escribir su propio código de exploración. Básicamente es probable que haya suficientes ganchos para manejar casi cualquier cosa.

He escrito mi propio colector, es preciso en el montón y conservadora en la pila. No toca C hizo punteros. Para algunas aplicaciones, será más rápido porque se sabe mucho acerca de mis objetos de lenguaje asignado y no se preocupa por otras cosas que es administrado, por ejemplo, el uso de los destructores tradicionales C ++.

Sin embargo, no es incremental o generacional, y no maneja los hilos, así (que no es lo suficientemente inteligente como para hilos de parada con las señales). En el lado positivo, sin embargo, que no requiere técnicas de ligamiento mágicas que hace Boehm (a mallocs de captura, etc). En el lado menos serio no se puede poner objetos administrados en otros más no administrados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top