2011-03-17 11 views
33

Mi piacerebbe sapere se esiste un modo per verificare quanti riferimenti ha un oggetto Java. Per quanto ho potuto verificare, l'unico modo per farlo è usare JVMTI attraverso un'interfaccia JNI. C'è una soluzione java pura (senza usare le librerie native) per ottenere queste informazioni?È possibile ottenere il conteggio dei riferimenti agli oggetti?

Stiamo sviluppando uno strumento educativo per l'animazione della struttura dei dati (da utilizzare con l'implementazione da parte degli studenti di determinati algoritmi), quindi sarebbe molto bello controllare gli oggetti "rilasciati" nel modo più intrusivo (I Sto cercando di evitare di costringere l'utente di questo strumento a richiamare un metodo come ObjectReleased (objRef) per aggiornare l'animazione della struttura dati per una rimozione di elementi o qualcosa di simile)

+2

I conteggi di riferimento non vengono tracciati in una JVM. L'unico modo per sapere è di contarli. – Gabe

+1

Esiste una libreria che può essere utilizzata per ottenere una notifica quando un oggetto viene sottoposto a garbage collection. Si prega di fare riferimento a questo link per maggiori dettagli http://sourceforge.net/projects/gcradar/ –

+0

@AmrenduPandey, non semplicemente "grassetto alcune lettere" - questo non è un modo appropriato per migliorare una domanda. Le modifiche dovrebbero essere sostanziali, non solo apportare modifiche alla formattazione. – Charles

risposta

12

Dalla tua descrizione, sembra che ti interessano di meno per il conteggio effettivo dei riferimenti che semplicemente sapere quando un oggetto è stato raccolto . In tal caso, è possibile utilizzare WeakReference o PhantomReference per determinare quando un oggetto di riferimento è pronto per la finalizzazione.

See:

Spero che questo aiuti.

Problemi correlati