Java Virtual Machine - Caricatore di classi

La JVM gestisce il processo di caricamento, collegamento e inizializzazione di classi e interfacce in modo dinamico. Durante il processo di caricamento, il fileJVM finds the binary representation of a class and creates it.

Durante il processo di collegamento, il loaded classes are combined into the run-time state of the JVM so that they can be executed during the initialization phase. La JVM utilizza fondamentalmente la tabella dei simboli memorizzata nel pool di costanti di runtime per il processo di collegamento. L'inizializzazione consiste in realtàexecuting the linked classes.

Tipi di caricatori

Il BootStrapil programma di caricamento classi si trova in cima alla gerarchia del programma di caricamento classi. Carica le classi JDK standard nella directory lib di JRE .

Il Extension class loader si trova al centro della gerarchia del class loader ed è il figlio immediato del class loader bootstrap e carica le classi nella directory lib \ ext di JRE.

Il Applicationil programma di caricamento classi si trova in fondo alla gerarchia del programma di caricamento classi ed è l'elemento secondario immediato del programma di caricamento classi dell'applicazione. Carica i barattoli e le classi specificati daCLASSPATH ENV variabile.

Collegamento

Il processo di collegamento consiste nei seguenti tre passaggi:

Verification- Questo viene fatto dal verificatore Bytecode per garantire che i file .class generati (il Bytecode) siano validi. In caso contrario, viene generato un errore e il processo di collegamento si interrompe.

Preparation - La memoria viene allocata a tutte le variabili statiche di una classe e vengono inizializzate con i valori predefiniti.

Resolution- Tutti i riferimenti simbolici alla memoria vengono sostituiti con i riferimenti originali. A tale scopo, viene utilizzata la tabella dei simboli nella memoria delle costanti di runtime dell'area del metodo della classe.

Inizializzazione

Questa è la fase finale del processo di caricamento delle classi. Alle variabili statiche vengono assegnati valori originali e vengono eseguiti blocchi statici.