La pregunta lo dice todo. Tengo una estructura de datos No puedo Marshal debido a una tabla hash débil ... preguntándome si puedo deshacerme de ella :)¿Cómo se usan las matrices débiles?
Respuesta
Una matriz débil es una matriz de punteros débiles. Un puntero débil es una referencia sobre un valor que puede ser basura recolectada.
Si usa un puntero regular sobre un valor, evitará su recolección de basura hasta que el árbitro sea la basura recolectada. Con una referencia débil, el valor puede ser recolectado antes del árbitro.
Un ejemplo de uso es una fuente que alimenta datos a múltiples sumideros. Si la fuente contiene punteros regulares a los sumideros, cada vez que un fregadero ya no se necesite, no se recolectará basura hasta que la fuente esté (lo cual, por ejemplo, nunca puede suceder). Si la fuente utiliza referencias débiles a los sumideros, los sumideros dados pueden ser recolectados antes de la fuente.
Otro ejemplo es hashconsing para un tipo que utiliza hashtables débiles (que implican matrices débiles). Rápidamente, hashconsing es una forma de recordar todos los valores de un tipo determinado que se crean y viven en el programa. Junto con un constructor de valores apropiado, esto puede garantizar el máximo intercambio de valores de ese tipo y permite implementar la igualdad estructural en ese tipo como igualdad física. En ese caso, si se usa una tabla hash no débil, los valores que el programa ya no use nunca serán basura.
Finalmente, muchas personas piensan (erróneamente) que las referencias débiles son útiles para implementar cachés. Mantenga una referencia débil sobre un valor, si fue basura recolectada, vuelva a cargar/recalcular el valor. Este no es un buen algoritmo de caché porque una gran colección de basura recupera cualquier valor que ya no se referencia. Por lo tanto, su algoritmo de almacenamiento en caché no tiene predictibilidad ni propiedades útiles, como, por ejemplo, que el tamaño de la memoria caché/disponible no exceda una proporción determinada.
Utilice un par biyectivo de funciones de mapa entre su estructura de datos y su representación estructuralmente congruente que sea compatible con el módulo Marshall.
No puedo darle un tic también, James, aunque me gustaría. Ver siguiente ... – Yttrill
El problema es que esta es una tabla de símbolos para el esquema OCS, lo obvio que se debe guardar es la expresión s antes de la compilación. El problema es que "guardar" es parte de Dypgen, guardando un autómata, y no puedo desconectar fácilmente el esquema compilado del autómata. – Yttrill
De hecho, podría hacerlo asignando un entero a cada acción del Analizador, guardar eso y guardar las expresiones s por separado antes de la compilación. Pero luego tengo el problema: ¿cómo evito recompilar el código del esquema cada vez que se reduce la producción? – Yttrill
- 1. ¿Cómo se implementan las referencias débiles?
- 2. ¿Cómo se pasan las matrices?
- 3. Las variantes se usan recursivamente?
- 4. ¿Cómo se usan las condiciones en las funciones de WiX?
- 5. ¿Cómo se implementan las matrices en Java?
- 6. ¿Cómo se implementan las matrices en Perl?
- 7. ¿Cómo funcionan las sesiones de PHP? (no "¿cómo se usan?")
- 8. Se rechazarán las aplicaciones que usan telprompt
- 9. ¿Las matrices de JavaScript realmente se implementan como matrices?
- 10. ¿Cómo funcionan los eventos débiles?
- 11. ¿Cómo se usan las funciones de stl como for_each?
- 12. ¿Cómo se usan las versiones de rieles múltiples con rbenv?
- 13. ¿Cómo se usan las fuentes incorporadas de gnuplot?
- 14. ¿Cómo se usan las clases de los archivos .jar?
- 15. ¿Cómo se usan las sesiones con Compojure/Ring?
- 16. ¿Cómo se usan las máscaras personalizadas de Datepicker y Timepicker?
- 17. ¿Cómo serializar punteros compartidos/débiles?
- 18. System.StackOverflowException, cuando se establece ¿Se usan las propiedades?
- 19. ¿Cuándo se deben usar referencias débiles?
- 20. ¿Las matrices numpy se pasan por referencia?
- 21. Java: cómo funcionan las matrices
- 22. Referencias débiles en python
- 23. MS Access: ¿Cómo puedo averiguar dónde se usan las tablas, las consultas, las macros, etc.?
- 24. ¿Cómo se ven las referencias débiles y fuertes en Objective-C?
- 25. Propiedades sintetizadas para tipos de datos primitivos que usan ARC: ¿débiles o asignados?
- 26. ¿Cómo se implementa la longitud en las matrices de Java?
- 27. ¿Cómo se implementan las matrices asociativas en PHP?
- 28. ¿Las fábricas abstractas usan "nuevo"?
- 29. ¿Cómo se usan DVCS en equipos grandes?
- 30. ¿Cómo se usan los marcos de CSS?
Muy buena respuesta, ¡gracias! – Yttrill