Javatpoint Logo
Javatpoint Logo

Arquitetura da JVM (Máquina Virtual Java)

JVM (Java Virtual Machine) é uma máquina abstrata. É uma especificação que fornece um ambiente de tempo de execução no qual o bytecode do java pode ser executado.

As JVMs estão disponíveis para muitas plataformas de hardware e software (ou seja, a JVM depende da plataforma).

O que é JVM

Isto é:

  1. Uma especificação em que o trabalho da Java Virtual Machine é especificado. Mas o provedor de implementação é independente para escolher o algoritmo. Sua implementação foi fornecida pela Oracle e outras empresas.
  2. Uma implementação Sua implementação é conhecida como JRE (Java Runtime Environment).
  3. Instância de tempo de execução Sempre que você grava o comando java no prompt de comando para executar a classe java, uma instância da JVM é criada.

O que ela faz

A JVM executa a seguinte operação:

  • Carrega código
  • Verifica código
  • Executa código
  • Fornece ambiente de tempo de execução

A JVM fornece definições para:

  • Área de memória
  • Formato de arquivo de classe
  • Conjunto de registros
  • Pilha de garbage collector
  • Relatório de erros fatais etc.

Arquitetura da JVM

Vamos entender a arquitetura interna da JVM. Contém carregador de classe, área de memória, mecanismo de execução etc.

JVM Architecture

1) Classloader

O Classloader é um subsistema da JVM que é usado para carregar arquivos de classe. Sempre que executamos o programa java, ele é carregado primeiro pelo carregador de classe. Existem três carregadores de classes integrados em Java.

  1. Bootstrap carregador de classe: Este é o primeiro carregador de classes, que é a superclasse do carregador de classes Extension. Carrega o arquivo jar, que contém todos os arquivos de classe do Java Standard Edition, como as classes de pacote java.lang, classes de pacote java.net, classes de pacote java.util, classes de pacote java.io, classes de pacote java.sql etc.
  2. Extension carregador de classe: Este é o carregador de classes filho do Bootstrap e o carregador de classes pai do System classloader. Ele carrega os arquivos jar localizados no diretório $ JAVA_HOME/jre/lib/ext.
  3. Sistema / Aplicativo carregador de classe: Este é o carregador de classes filho do carregador de classes Extension. Carrega os arquivos de classe do classpath. Por padrão, o caminho da classe é definido como o diretório atual. Você pode alterar o caminho de classe usando a opção "-cp" ou "-classpath". Também é conhecido como carregador de classes de aplicativos.
Testar agora

Saída:

sun.misc.Launcher$AppClassLoader@4e0e2f2a
null

Estes são os carregadores de classes internos fornecidos pelo Java. Se você deseja criar seu próprio carregador de classe, é necessário estender a classe ClassLoader.

2) Área de Classe (Método)

Classe (método) A área armazena estruturas por classe, como o pool constante de tempo de execução, dados de campo e método, o código para métodos.

3) Heap

É a área de dados de tempo de execução na qual os objetos são alocados.

4) Pilha

Java Stack armazena quadros. Ele contém variáveis locais e resultados parciais e desempenha um papel na invocação e no retorno do método.

Cada encadeamento possui uma pilha JVM privada, criada ao mesmo tempo que encadeamento.

Um novo quadro é criado toda vez que um método é chamado. Um quadro é destruído quando sua chamada de método é concluída.

5) Registro do contador de programa

O registro do PC (contador de programa) contém o endereço da instrução da máquina virtual Java atualmente em execução.

6) Pilha de método nativo

Ele contém todos os métodos nativos usados no aplicativo.

7) Mecanismo de Execução

Contém:

  1. Um processador virtual
  2. Interpretador: Lê o fluxo do bytecode e execute as instruções.
  3. Compilador Just-In-Time (JIT): É usado para melhorar o desempenho. O JIT compila partes do código de bytes que possuem funcionalidade semelhante ao mesmo tempo e, portanto, reduz a quantidade de tempo necessária para a compilação. Aqui, o termo "compilador" refere-se a um tradutor do conjunto de instruções de uma Java Virtual Machine (JVM) para o conjunto de instruções de uma CPU específica.

8) Interface nativa Java

Java Interface Nativa (JNI) é uma estrutura que fornece uma interface para se comunicar com outro aplicativo escrito em outra linguagem como C, C ++, Assembly etc. Java usa a estrutura JNI para enviar saída ao console ou interagir com as bibliotecas do sistema operacional.


Próximo tópicoVariáveis Java




Help Others, Please Share

facebook twitter pinterest

Learn Latest Tutorials


Preparation


Trending Technologies


B.Tech / MCA