La risposta è "ogni istanza della classe all'interno di un caricatore di classi differenti è distinta."
Se hai due JVM diverse (hai richiamato java MainOne
e java MainTwo
), questi sono ovviamente caricatori di classi differenti. Tuttavia, qui ci sono casi d'angolo con cose come nailgun che mantiene in esecuzione la JVM e ... le cose si complicano.
Ci sono anche situazioni come quando l'applicazione viene lanciata da un IDE. Alcuni IDE genereranno una nuova JVM per l'esecuzione dell'applicazione, altri potrebbero lanciare un nuovo caricatore di classi all'interno della propria JVM (non credo che nessuno lo faccia più perché ha reso l'IDE meno idealmente stabile). Anche questo può diventare molto complicato.
Durante l'esecuzione all'interno di un ambiente del server delle applicazioni, può essere configurabile oppure è necessario verificare le specifiche. Tuttavia, renditi conto che ogni possibile combinazione è possibile. Puoi avere l'isolamento di due moduli nello stesso orecchio (ognuno ha un proprio caricatore di classe), puoi condividere l'intero caricatore di classe .ear, puoi avere qualche modalità di compatibilità funky dove tutto condivide il loader della classe .jar, ma è esso stesso in un caricatore di classe isolato per .war, oppure è possibile che l'intero server utilizzi un caricatore di classe. Si noti che alcuni application server hanno cambiato il loro modo di lavorare con versioni diverse (JBoss prima della versione 5 non era isolato, mentre dopo la versione 5 era, e 4.0.2 aveva un programma di caricamento classi gerarchico mentre 4.0.3 veniva ripristinato su un caricatore classe unificato). È un casino. E quindi la chiave di lettura di "static is one per class loader" è la chiave.
È anche possibile avere caricatori di classi diversi all'interno di una singola applicazione come dimostrato in eseguire un file jar eseguibile all'interno del programma java usando i programmi di caricamento classe .
Quindi, tornando alla risposta "ogni istanza della classe all'interno di un altro caricatore di classi è distinta" - e ciò può assumere molte forme e condizioni di bordo diverse.