2012-03-21 21 views
5

Sto cercando di trovare un modo per trovare un'istanza di classe all'interno di una JVM funzionante. La JVM è incorporata in un altro processo e un oggetto viene creato da questo processo. Lo stesso processo esegue il mio codice Java. Non ho un accesso diretto al riferimento all'oggetto Java nel mio codice Java, ma conosco la classe di quell'oggetto. Voglio scoprire se ci sono oggetti di questa classe già istanziati in JVM, e se lo sono, voglio trovarli (diciamo una matrice Object con riferimenti a tutte le istanze di questa classe). Questo meccanismo può essere un'API Java o un'API JNI.Come trovare un'istanza di classe in una JVM in esecuzione

So che è possibile poiché i debugger mi consentono di ispezionare tutte le istanze. Non riesco proprio a trovare la strada.

Grazie

Nikita

+0

pensare a tutti quei motori servlet là fuori. Vorresti un'applicazione sconosciuta in esecuzione in un JBoss o Tomcat o WebSphere o xxx con accesso ai tuoi oggetti instanciated? – Java42

+0

Sarei estremamente scioccato se fosse possibile. –

risposta

0
+0

Non trovo nulla nel pacchetto di strumentazione che mi dia accesso a oggetti già istanziati. Mi permette di giocare con le classi e il caricamento delle classi, ma non con gli oggetti. Altri pensieri ??? Grazie –

+0

@NikitaVisnevski si veda questo metodo 'getAllLoadedClasses()' o 'getInitiatedClasses (..)' – Adrian

+0

(Raggiungere qui) Penso che potrebbe essere necessario specificare un agente di strumentazione sul proprio avvio JVM (incorporato) e intercettare varie chiamate, ad es. nuova X(). – alphazero

0

questo dovrebbe essere possibile da un altro processo che utilizza l'interfaccia di debug

http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/

Tuttavia, se ho capito correttamente la vostra esigenza, si avrebbe bisogno il processo per eseguire il debug sé che probabilmente non è andare a lavorare.

Problemi correlati