Puis / devrais-je utiliser WeakReference dans ma structure d'objet complexe avec db4o?

StackOverflow https://stackoverflow.com/questions/1913155

  •  19-09-2019
  •  | 
  •  

Question

Je songe au port d'une application à db4o. Le modèle de données se compose de beaucoup de petits objets avec beaucoup de références entre eux. Par exemple, j'ai un livre qui pointe à un auteur et le chapitre. Les chapitres ont des sections, des sections ont de grandes taches de texte, des images, et ils font référence les caractères mentionnés.

Je pense qu'il devrait être possible de conserver la structure méta en mémoire (tout sauf les blobs texte) mais je me demandais si je pouvais utiliser une astuce impliquant WeakReference si db4o serait juste garder en mémoire la partie du modèle que je vraiment besoin (c.-à-que je l'ai utilisé récemment).

La même chose est vraie pour les blobs de texte (qui devrait être autour 1-10KB). Est-il possible d'obtenir une chaîne sans avoir à se soucier de la couche DB et sans avoir à interroger le blob de texte à l'aide d'un artificiel ID à l'intérieur du getter et sans utiliser une référence difficile qui conserve tout le texte en mémoire tout le temps?

Était-ce utile?

La solution

Mise hors WeakReferences est principalement utilisé pour optimiser les performances de . Les inconvénients de cette approche ne sont pas négligeables - donc soyez prudent. Je ne le recommanderais pas.

Le contrôle de l'utilisation de la mémoire doit être fait en utilisant caractéristiques d'activation . L'activation peut vous aider à garder une partie seulement de vous modèle en mémoire et WeakReferences vous aidera à GC objets ne sont plus utilisés. Je pense que ce la voie à suivre.

De plus - vous pouvez poser vos questions à db4o forums pour obtenir l'aide de la communauté db4o

.

Goran

Autres conseils

Je n'ai pas utilisé DB40, ou tout ORM / produit OODB récemment, mais il me frappe que ce genre de gestion de la mémoire et fonction de gestion graphique devrait faire partie du cadre lui-même plutôt que quelque chose que vous construisez sur le dessus de celui-ci. Si le DB40 de ne propose pas Versant cela, il pourrait être intéressant de vous regarder dans un autre produit à la place qui ne l'offrir. Alors, je me rends compte pas la réponse que vous cherchez, mais tirer parti du cadre serait mon premier port d'escale.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top