il mio obiettivo finale è poter ricaricare le classi dopo che sono state già caricate sulla JVM.Scaricare un classloader
Dopo aver letto la seguente risposta Unloading classes in java?, ho cercato di implementare il proprio Class-Loader, che a sua volta crea una diversa istanza di Class-Loader (stesso tipo di proprio) per ogni classe che carica.
quindi, il risultato è una classe per un caricatore di classi.
Lo scopo è essere in grado di eseguire il comando GC della classe, ovvero tutte le sue istanze, quindi di scaricare il suo programma di caricamento classi e di poter ricaricare la stessa classe dai suoi byte.
il problema è - posso vedere la mia istanza di classe di essere garbage collection utilizzando finalizzare il metodo(), ma non posso ottenere la mia classe-Loader per scaricare, o per essere garbage collection.
c'è qualche esempio di codice, un semplice test, che mostra come può essere fatto?
grazie, tutto l'aiuto sarebbe apprezzato
Edit:
essere più chiari, sono interessato esempi di codice in cui l'istanziazione dei nuovi oggetti avviene tramite il 'nuovo) (' operando e Class-loader non sta caricando esplicitamente la classe nel main, ma dopo il successivo 'new()' viene chiamato.
Quando si carica una classe tramite un 'ClassLoader' personalizzato, si otterrà un oggetto' Class'. È impossibile usare l'operatore 'new' con quello. L'uso di 'new' implica che il codice è stato collegato alla classe usata da' new' e quindi, la classe non può ottenere la garbage collection quando il codice che contiene l'espressione 'new' è ancora attivo. Devi usare Reflection a questo punto, ad es. invoca 'newInstance()' su 'Class'. Ovviamente, il codice caricato dinamicamente può usare 'new' per istanziare classi all'interno del proprio ambito. – Holger