Pregunta

Estoy considerando al puerto de una aplicación a db4o. El modelo de datos se compone de una gran cantidad de objetos pequeños con una gran cantidad de referencias entre sí. Por ejemplo, tengo un libro que apunta a un autor y capítulo. Los capítulos tienen secciones, las secciones tienen grandes manchas de texto, imágenes, y hacen referencia a personajes mencionados.

Creo que debería ser posible para mantener la estructura de meta en la memoria (todo excepto las gotas de texto) pero me preguntaba si podría utilizar algún truco inteligente que implica WeakReference por lo db4o acaba de mantener la parte del modelo en la memoria que yo realmente necesito (es decir, el que he estado usando recientemente).

Lo mismo es cierto para las manchas de texto (que debe ser alrededor de 1-10KB). ¿Es posible obtener una cadena sin tener que preocuparse de la capa de base de datos y sin tener que preguntar para la burbuja de texto utilizando un ID artificial en el interior del captador y sin utilizar una referencia dura que mantiene todo el texto en la memoria todo el tiempo?

¿Fue útil?

Solución

Apagar WeakReferences se utiliza sobre todo para un rendimiento sintonía . Las desventajas de este enfoque no son insignificantes - así que ten cuidado. Yo no lo recomendaría.

El control de uso de la memoria debe hacerse utilizando características activación . La activación puede ayudar a mantener sólo una parte del modelo que en la memoria y le ayudará a WeakReferences GC ya no objetos utilizados. Creo que ese es el camino a seguir.

También - usted puede enviar sus preguntas a db4o foros para obtener ayuda de la comunidad db4o

.

Goran

Otros consejos

No he utilizado DB40, o cualquier producto ORM / OODB recientemente, sin embargo, sería Hiéreme que este tipo de gestión de memoria y función de administración gráfica debería ser parte del propio marco en lugar de algo que se construye en la parte superior de la misma. Si DB40 de Versant no ofrece este podría valer la pena que mirar en otro producto en cambio que no lo ofrecen. Por lo tanto, me doy cuenta no es la respuesta que busca, pero aprovechando el marco sería mi primer puerto de escala.

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