Java Virtual Machine - Class Loader

A JVM gerencia o processo de carregamento, vinculação e inicialização de classes e interfaces de maneira dinâmica. Durante o processo de carregamento, oJVM finds the binary representation of a class and creates it.

Durante o processo de vinculação, o loaded classes are combined into the run-time state of the JVM so that they can be executed during the initialization phase. A JVM basicamente usa a tabela de símbolos armazenada no conjunto de constantes de tempo de execução para o processo de vinculação. A inicialização consiste em realmenteexecuting the linked classes.

Tipos de carregadores

o BootStrapo carregador de classes está no topo da hierarquia do carregador de classes. Ele carrega as classes JDK padrão no diretório lib do JRE .

o Extension O carregador de classes está no meio da hierarquia do carregador de classes e é o filho imediato do carregador de classes de bootstrap e carrega as classes no diretório lib \ ext do JRE.

o Applicationo carregador de classes está na parte inferior da hierarquia do carregador de classes e é o filho imediato do carregador de classes do aplicativo. Ele carrega os jars e classes especificadas peloCLASSPATH ENV variável.

Linking

O processo de vinculação consiste nas seguintes três etapas -

Verification- Isso é feito pelo verificador de Bytecode para garantir que os arquivos .class gerados (o Bytecode) são válidos. Caso contrário, um erro é gerado e o processo de vinculação é interrompido.

Preparation - A memória é alocada para todas as variáveis ​​estáticas de uma classe e elas são inicializadas com os valores padrão.

Resolution- Todas as referências de memória simbólica são substituídas pelas referências originais. Para fazer isso, a tabela de símbolos na memória constante de tempo de execução da área de método da classe é usada.

Inicialização

Esta é a fase final do processo de carregamento de classe. Variáveis ​​estáticas recebem valores originais e blocos estáticos são executados.