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.