Domanda

Ho un modello di dati con uno scheletro (metadati) e grandi oggetti di dati. Mi piacerebbe mantenere lo scheletro in memoria e tenere riferimenti deboli agli oggetti di dati. Capisco come avrei perseguire questo obiettivo con pianura Java, come vorrei creare un WeakHashMap e ripulire ecc Ma mi chiedo quale sarebbe il modo migliore per resuscitare gli oggetti di dati dopo che sono stati GC'd?

Devo aggiungere una chiave tecnica alla mia mappa che ho assegnato a un campo nell'oggetto dei dati, in modo da poter trovare di nuovo? O dovrei chiamare db.ext (). GetId () e utilizzare questo ID come chiave tecnica? Se sì, come dovrei ottenere queste chiavi quando si carica il genitore? Cosa suggerisci?

È stato utile?

Soluzione

Vorrei aggiungere una chiave tecnica per il vostro grande data-oggetto. Poi si memorizza questa chiave tecnica nella vostra meta-dati-class. Ora, quando si arriva alla grande data-oggetto si ottiene da esso è chiave tecnica. Che una soluzione molto semplice.

db4o utilizza effettivamente riferimenti deboli per restituire lo stesso oggetto e di evitare inutili deserialisation. Così, quando si chiede un oggetto e non è stato raccolto dal GC, db4o tornerà lo stesso oggetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top