Cinco de área de memória da JVM é dividido em detalhes e Alfabetização rápido

Em primeiro lugar, o rápido alfabetização

1. JVM é o que

  JVM é Java sigla Virtual Machine, que muitas vezes se referiu à Java Virtual Machine. A máquina virtual é um computador abstrato, completo com sua própria arquitetura de hardware, como processadores, pilhas e compreensão específica do que fazemos. Agora só precisamos saber que você deseja executar o arquivo Java, você deve primeiro passar por um compilador chamada javac, o código é compilado em arquivos de classe, e em seguida interpretado pelos arquivos de classe JVM em código de máquina para cada plataforma pode ser identificado, e, finalmente, conseguir executar código cross-platform .
image.png

2. A relação entre o JDK, JRE JVM

  • JDK: chamou o Java Development Kit, kit de desenvolvimento Java para o chinês, ou seja, todas as coisas relacionadas com o java estão incluídos nele, como o ambiente operacional JRE, código do núcleo java, JVM, e assim por diante.
  • JRE: chamou o Java Runtime Environment, o chinês como o ambiente Java Runtime que você deseja executar o arquivo java deve ter trabalho ambiente Java, JRE é fornecer um ambiente como esse.
  • JVM: Como já mencionado JVM, que é a parte central de Java.
    Basta usar um diagrama para entender a relação entre estes três:
    FIG um: a relação entre o JDK, JRE JVM

3. Composição de jvm

Figura 2: Composição da JVM FIG.
  estudantes JVM não entendem depois de ver esta imagem pode ser uma força ignorante pouco, mas tudo bem, só quero que você ponha esta foto jvm entender que existem três conteúdo muito importante, como a execução de código 1.java? 2. Como o gerenciamento de memória? 3. Como o uso de recursos segmento? Há a impressão de cabeça, com perguntas para aprender.

4. Execute o processo de java provavelmente arquivo

  Deseja executar arquivos de origem java, você deve passar por compilador javac em .class arquivo, ou seja, arquivos bytecode. Jvm, em seguida, o intérprete interpretado em código de máquina sobre uma máquina especial. Intérprete em cada máquina não é o mesmo, muitas vezes usamos é windows e linux sistema, que é a razão pela qual a plataforma Java pode atravessar. Ao executar um programa desde o início, começou a instanciar uma máquina virtual, a execução de vários programas terá várias instâncias de máquinas virtuais, o programa sair ou desligar, a instância da máquina virtual também vai morrer, dados entre várias máquinas virtuais é não compartilhado.

área de dados em tempo de execução dois, JVM

área de dados de tempo de execução 1. Composição

  Máquina Virtual na implementação do programa de java, vai dividir o seu próprio gerenciamento de memória para várias regiões, cada uma com seu próprio uso, e criar o tempo eo tempo não destruir o mesmo. Na área de memória do programa principal corre pode ser dividido em cinco, a saber: a área de método, pilha, máquina de pilha virtual, pilhas método nativo, o contador de programa. Pode ser descrito pelo seguinte esquema:
área de dados de tempo de execução máquina virtual Java

2. heap Java

  heap Java é o maior pedaço de gerenciamento de máquina virtual java memória é compartilhada por todos os tópicos de área de memória. O único propósito da existência é a de armazenar a instância do objeto, memória quase todas as instâncias de objeto são aqui alocado. Mas agora, com o contínuo desenvolvimento da tecnologia, nem todas as instâncias de objetos são alocados na memória heap, há também pode ser alocada na pilha. Devido ao grande pegada, e armazenar uma variedade de instâncias de objetos, de modo que o principal gerenciamento de máquina virtual Java coleta de lixo é nesta área, depois de método de coleta de lixo detalhada será mencionado. JVM pilha especificação pode estar num espaço de memória física descontínua predeterminado, desde que pode ser logicamente contígua. E isso pode ser prorrogado por -Xmx e -Xms pilha tamanho da memória, se não houver memória suficiente na alocação de pilha para o exemplo, e quando a pilha não pode ser estendido, será relatado OutOfMemoryError exceção.

3 área método

Tal como acontece com o heap Java, a área de método é partilhada pelos vários tópicos de área de memória, esta área é usada para armazenar classe de informações (nome da classe, informações de campo, informações de método), variáveis estáticas código, constantes e compilador . especificação JVM não distingue entre pilha e zona método, apenas o método de zona é descrito como parte da lógica pilha, mas tem um não-alias chamado pilha (não-Heap), o objectivo é separar a partir da pilha de Java. De acordo com o carve em nome de mecanismo de coleta de lixo reciclado de pensamento, se desenvolveu na máquina virtual HotSpot, a área de método pode ser chamado de "geração permanente" (mas pode ser entendido, mas a essência não é o mesmo), coleta de lixo amontoado em Java dividido em uma seção chamada gerações permanentes, esta área usada para implementar a área de método, como coletor de lixo HotSpot pode gerenciar o heap Java assim como parte do gerenciamento de memória, sem ter que desenvolver um gerenciador de memória especial para a área do método.

piscina constante de tempo de execução

Runtime constante piscina é uma parte do método da área, além de as versões de arquivo classe aulas, campos, métodos e informações de descrição de interface, a informação é também uma piscina constante para uma variedade de literal gerada durante a compilação e armazenamento referências símbolo, essa parte vai entrar na zona no método de operação da classe de carga constante de tempo piscina. Java formatos de máquina virtual para cada parte do arquivo de classe (naturalmente incluindo a piscina constante) tem regras rígidas, cada byte é usado para armazenar dados que devem satisfazer os requisitos da especificação, este será reconhecido pela máquina virtual, carregamento e execução.

4. Programa de Contador

Embora uma grande área na figura acima o contador de programa, mas na verdade é um espaço de memória menor, pode ser visto como o indicador de número da linha fio de código de byte atual executado. Em seguida, o intérprete bytecode ao fazer o trabalho, onde um, que é determinada pelo. Nós todos sabemos que, no caso de multi-threaded, CPU no segmento de execução é conseguido por meio de fios de comutação alternadamente, ou seja, um processador de CPU (hipótese single-core) tem um fio de instruções só será executado, por isso, a fim de parâmetro thread após a execução pode ser restaurada para a posição correta, cada segmento deve ter um contador de programa separado, entre os fios de forma independente um do outro, loja independente, chamamos esse tipo de área de memória para a memória "enfiar privada". Obviamente, o contador de programa é o segmento privado. Se o segmento está executando um método java, contador de programa registra o endereço da instrução de máquina bytecode virtual que está sendo executado; método nativo se a execução, um valor contador de programa é o registro nula (indefinido), esta área de memória é de apenas java ele não prevê uma situação em qualquer especificação da máquina virtual java OutOfMemoryError área.

pilha Máquina Virtual Java 5.

Nós pilha áspera memória java muitas vezes colocar é dividido em duas partes esta parte da pilha, pilha e pilha, máquina virtual Java, ou uma pilha de máquina virtual, seção da tabela variáveis locais. Como o contador de programa, a pilha de thread máquina virtual é privado, o seu ciclo de vida com o mesmo fio. Em cada método são realizadas simultaneamente para criar um quadro de pilha (quadro de pilha), cada quadro de pilha um método correspondente é invocado, o quadro de pilha para o armazenamento de tabela variável local, a pilha de operandos, a lista de informações dinâmicas, as exportações método. Cada método realizado desde o início até ao fim de um quadro de pilha corresponde a uma máquina virtual a partir da pilha para a pilha de uma pilha de processo.

  • mesa variável local: Como o nome sugere, ele é usado para armazenar uma variável local no método (incluindo a vida variável não estática e parâmetro de função em um método), os tipos de dados básicos, valor de depósito direto para uma variável tipo de referência, que armazena ponteiros objeto. Uma vez que apenas os tipos de dados básicos de variáveis armazenadas tipo de referência de endereço e valores de retorno desses tipos de espaço necessários para conhecido e fixo, para que quando entrar em um método, esse método requer muito variáveis locais alocados no quadro de pilha espaço é totalmente determinada durante o processo de operação não irá alterar o tamanho da tabela de variáveis local.
  • Constante ponto de referência piscina para Executar: inevitavelmente usado durante a execução das constantes de processo definidos na classe, assim armazenado a uma estrutura de pilha aponta para uma constante de tempo de execução de referência piscina.
  • Métodos retornam endereço: Após o final da implementação de uma chamada de método para retornar ao seu lugar antes, então você precisa para salvar um quadro de pilha de endereços de retorno do método.

6. As pilhas método nativo

Nativas pilhas método e pilhas de máquina virtual é muito semelhante, mas a diferença é a máquina virtual como uma implementação de máquina virtual de serviços método de pilha Java, método pilhas nativas de máquinas virtuais são serviço método nativo. Alguns máquina virtual e não distingue entre as pilhas método nativo e empilhar máquinas virtuais, como máquina virtual dom ponto quente directamente para os dois combinados.

7. Use um resumo imagem

JVM resumo memória

 

O endereço original: https: //www.cnblogs.com/chaogu94/p/12529692.html

Acho que você gosta

Origin www.cnblogs.com/fuqiang-terry/p/12529716.html
Recomendado
Clasificación