estrutura de memória JVM

prefácio

No processo de desenvolvimento da linguagem Java, sem memória erros são erro muito comum. Para a estrutura de memória JVM tem uma melhor compreensão mais e melhor ajuda, a solucionar tais problemas, efetivamente evitar tais problemas. JAVA 8 na estrutura de memória foi alterado, Metaspace substituído PermGen.

Estrutura de memória Introdução

imagem da memória do JVM a partir da estrutura de rede, como mostrado na FIG :()

estrutura de memória JVM dividido em:

Heap (pilha): tópicos share, bem como uma matriz de todas as instâncias do objeto a ser alocada na pilha. Reciclagem é gerido principalmente objetos.

A área de método (meathod AREA): share Thread, armazenar informações de classe, constantes, variáveis estáticas, o compilador tempo de código de compilação.

PC registo (PC Register): Linha privada. Ponto para a próxima instrução a ser executada.

Método pilha (JVM Stack): armazenamento de mesa privada, variável local de segmento, operação pilha, de ligação dinâmica, para exportação, o ponteiro do objeto.

pilhas método nativo (nativo MÉTODO pilha): Linha privada. Para usar o serviço método nativo máquina virtual. Java usa interfaces, como c ou serviço escrito em C ++, o código é executado nesta área.

detalhes regionais

Olhe para um mapa, pode ser explicação muito clara esse layout diagrama e os parâmetros de controle correspondentes estruturas de memória JVM :( Foto de Internet)

montão

instâncias e matrizes pilha efeito objecto está localizado. pontos acima da estrutura de pilha, e a nova geração pode ser dividido na velha geração. E a nova geração pode ser dividido em espaço Éden, Do espaço Survivor (s0), espaço Survivor Para (S1). Primeiro de todos os objetos recém-criados são colocados sobre a geração mais jovem. Deve-se notar, sobrevivente das duas zonas é simétrica, não tem qualquer relação, de modo que podem existir na mesma área ao mesmo tempo para copiar objetos vêm de Éden, e de um sobrevivente anterior copiado objeto, e copiados para a área de idade somente a partir do primeiro sobrevivente passar por cima do objeto. Além disso, um sobrevivente Chefe está vazia.

parâmetros de controle

-Xms conjunto espaço de pilha mínimo. conjuntos -Xmx o tamanho máximo do espaço de pilha. XX: newSize configurar a nova geração da quantidade mínima de espaço. XX: MaxNewSize configurar a nova geração da quantidade mínima de espaço.

Coleta de lixo

Esta área é a área operacional principal para coleta de lixo.

exceções

Se não há exemplos completos na alocação memória heap ea pilha não pode se expandir, ele lançará um OutOfMemoryError.

distrito de métodos

método District (Método Area) eo heap Java, já que cada linha é uma área de memória compartilhada, que é usado para armazenar informações de classe foi colocado na máquina virtual, constantes, variáveis estáticas, o compilador tempo para compilar o código e outros dados. Embora Java Virtual Machine Specification conforme descrito na área de método é uma parte lógica da pilha, mas tem um alias chamado Non-Heap (non-stack), o objeto heap Java devem ser distinguidos.

Muitas pessoas estão dispostas a área método chamado "Geração permanente" (Geração Permanente), essencialmente os dois não são equivalentes, simplesmente porque HotSpot Virtual

A equipe de design máquina proposta escolheu área de coleta geracional do GC se estende a métodos ou gerações permanentes para implementar apenas a área de método. Para outras máquinas virtuais (como BEA JRockit, IBM J9, etc.) é o conceito de geração permanente não existe. Em Java8 nas gerações vivendo desaparecido completamente.

parâmetros de controle

XX: PermSize definir o -XX espaço mínimo: MaxPermSize definir o espaço máximo

Coleta de lixo

No entanto, esta área vai envolver muito pouco coleta de lixo. A coleta de lixo alvo nesta área é principalmente para reciclagem piscina constante e tipo de descarga, em geral, a recuperação da região "realizações" são mais difíceis de satisfatória.

exceções

De acordo com a especificação Java Virtual Machine, quando o método da área de alocação de memória não pode atender a demanda, vai jogar

exceção OutOfMemoryError.

PC balcão

Seu papel pode ser visto como o número da linha designador bytecode executado pela thread atual.

exceções

Esta área de memória é o único que não prevê qualquer situação na região OutOfMemoryError de Java Virtual Machine Specification.

métodos de pilha

Cada segmento terá uma pilha privada. O método de chamar cada thread irá criar um quadro de pilha nesta pilha. Todos os tipos de dados de base (booleano, byte, carvão animal, curto, int, flutuador, de comprimento, duas vezes) da pilha será armazenado no processo de compilação cognoscível, referência de objecto (tipo de referência, que não é equivalente à do próprio objecto. A tabela de variáveis locais alocação de espaço de memória necessário feito durante a compilação, ao entrar em um método, esse método requer muito espaço para as variáveis locais alocados no quadro é completamente determinado durante a operação do método não altera o tamanho da tabela variável local.

parâmetros de controle

-Xss controlar cada tamanho da pilha rosca.

exceções

Na especificação Java Virtual Machine, esta área oferece duas anomalias:

Vai jogar StackOverflowError: rosca Pilha pede um grande anomalias de profundidade

Para permitir que a máquina virtual lança quando a profundidade;

OutOfMemoryError exceção: a máquina virtual pode dinamicamente expandir a pilha, quando a expansão não pode aplicar para ser jogado fora quando memória suficiente.

pilhas método nativo

pilhas método nativo (Native Method Pilhas) e o papel desempenhado pela máquina pilha virtual é muito semelhante ao que

Mas a diferença é a pilha de execução da máquina virtual para o método Java Virtual Machine serviço (ou seja bytecode), enquanto as pilhas método nativo

É uma máquina virtual para usar um método de serviço nativo.

parâmetros de controle

Sun JDK em pilhas método nativo e a pilha é os mesmos métodos, e, portanto, pode ser usado para controlar o tamanho de cada segmento -Xss.

exceções

Como a pilha da máquina virtual, método nativo pilhas área e vai jogar OutOfMemoryError StackOverflowError

Exceção.

Setembro energia nova uma nova alta, quebrando nove mil marca série Beiqi CE
Anterior
Quer comprar novos veículos de energia? Que vários modelos lançados em 2018 sob o entendimento
Próximo