JVM (Java Virtual Machine) é uma máquina abstrata. É uma especificação que fornece um ambiente de tempo de execução no qual o bytecode 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
Isso é:
- Uma especificação onde o funcionamento 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.
- Uma implementação Sua implementação é conhecida como JRE (Java Runtime Environment).
- Instância de tempo de execução Sempre que você escreve o comando java no prompt de comando para executar a classe java, uma instância da JVM é criada.
O que faz
A JVM executa a seguinte operação:
- Carrega código
- Verifica o código
- Executa código
- Fornece ambiente de tempo de execução
JVM fornece definições para:
quebrar java
- Área de memória
- Formato de arquivo de classe
- Conjunto de registro
- Pilha de lixo coletado
- Relatório de erros fatais, etc.
Arquitetura JVM
Vamos entender a arquitetura interna da JVM. Ele contém carregador de classe, área de memória, mecanismo de execução, etc.
1) Carregador de classe
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 classe integrados em Java.
//Let's see an example to print the classloader name public class ClassLoaderExample { public static void main(String[] args) { // Let's print the classloader name of current class. //Application/System classloader will load this class Class c=ClassLoaderExample.class; System.out.println(c.getClassLoader()); //If we print the classloader name of String, it will print null because it is an //in-built class which is found in rt.jar, so it is loaded by Bootstrap classloader System.out.println(String.class.getClassLoader()); } }Teste agora
Saída:
quantas cidades existem nos estados unidos
sun.misc.Launcher$AppClassLoader@4e0e2f2a null
Estes são os classloaders internos fornecidos pelo Java. Se quiser criar seu próprio carregador de classe, você precisará estender a classe ClassLoader.
2) Área de Classe (Método)
A área Classe (Método) armazena estruturas por classe, como o conjunto de constantes de tempo de execução, dados de campo e método, o código dos métodos.
3) Pilha
É 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 retorno de métodos.
Cada thread possui uma pilha JVM privada, criada ao mesmo tempo que o thread.
Um novo quadro é criado cada vez que um método é invocado. Um quadro é destruído quando a invocação do método é concluída.
5) Registro do contador do programa
O registro PC (contador de programa) contém o endereço da instrução da máquina virtual Java que está sendo executada no momento.
6) Pilha de métodos nativos
Ele contém todos os métodos nativos usados no aplicativo.
7) Motor de Execução
Contém:
8) Interface Nativa Java
Java Native Interface (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 para o console ou interagir com bibliotecas do sistema operacional.
string em array java