2012-03-29 11 views

risposta

0

È possibile utilizzare blocco statico per rilevare il caricamento della classe, ma non è possibile rilevare lo scarico di classe. In java tutte le classi caricate attraverso il classloader di sistema non verranno mai scaricate e tutte le classi caricate tramite altri classloader verranno scaricate solo quando il programma di caricamento di classe viene scaricato.

static{ 

     //execute when the class will be loaded 

    } 
5

È possibile aggiungere Java opta per vedere quale classe viene caricata tramite:

java -verbose:class 

A proposito di classe distrutta, non sono sicuro.

0

Vuoi queste informazioni nella vostra applicazione o vuoi semplicemente analizzare che dall'esterno? In quest'ultimo caso potresti forse usare VisualVM per quello. Forse la tua domanda è legata a questo: Loaded classes in VisualVM.

7

È possibile aggiungere command line option-verbose:class al proprio processo Java, per visualizzare informazioni relative a ciascuna classe caricata.

0

È possibile tenere traccia della creazione della classe nel costruttore statico. E tu non puoi rintracciare la sua distruzione per quanto mi riguarda. Le classi vengono scaricate solo quando gc raccoglie il classloader che è stato utilizzato per caricare le classi.
Potreste anche essere interessati a leggere questo: another question on classloaders at StackOverflow

2

Se sono ok con l'utilizzo di JRockit JVM, si può fare uso delle API di sotto, che vi darà richiamata metodi quando una classe viene caricata e la classe viene scaricato.
Dai un'occhiata alla classe JVM da cui dovremmo utilizzare il metodo getClassLibrary().
Sull'oggetto ClassLibrary possiamo registrare i listener per classloading eventi che dà i nomi delle classi, ecc

21

Se stai usando un Sun/Oracle JVM, è possibile utilizzare le opzioni TraceClassLoading e TraceClassUnloading. Utilizzare il seguente per vedere quali opzioni sostiene il vostro JVM:

java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal -version 

Se queste opzioni sono supportate, eseguire l'applicazione Java utilizzando -XX:+TraceClassLoading -XX:+TraceClassUnloading. Dovresti vedere messaggi come:

[Loaded ... from ...] 
[Unloading class ...] 
Problemi correlati