Domanda

C'è un modo in Java per fare qualcosa prima di esaurire la memoria. Ad esempio, tenere un elenco di precedenti documento afferma (per undo) e solo la rimozione di molto vecchi stati quando la memoria sta per esaurirsi?

È stato utile?

Soluzione

  

Per esempio, tenere un elenco di precedenti documento afferma (per undo) e solo la rimozione di molto vecchi stati quando la memoria sta per esaurirsi?

Si può essere in grado di fare qualcosa con SoftReference . Si noti anche la documentazione generale per il java .lang.ref pacchetto. Se gli oggetti sono raggiungibili solo attraverso un SoftReference, saranno garbage collection prima che si verifichi un errore di memoria. Si noti comunque che le macchine virtuali non sono tenuti a mantenere tali riferimenti prima di un tale evento o fare alcuna garanzia sulla quale ordine potrebbero essere cancellati in. Si potrebbe essere meglio la loro combinazione con una qualche forma di persistenza.

Altri suggerimenti

Sì, è certamente possibile.

Io probabilmente usare un elenco di SoftReference s per le precedenti afferma il documento. Questi sono garantiti da smaltire prima che si verifichi un'eccezione di memoria.

A un certo intervallo periodico, è possibile pulire i riferimenti nulli fuori dalla lista.

Io consiglio anche mantenere un normale riferimento allo stato più recente in modo da poter garantire sempre almeno un undo: -)

Essa dipenderà l'attuazione JVM, ma se siete fortunati la JVM non mancherà di tenere gli stati più recenti e smaltire i più vecchi. Questo non è strettamente necessario nella JVM specifiche, ma è il comportamento consigliato.

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