/ / Java VM o heap pode ficar menor? - java, jvm

Java VM pode o heap ficar menor? - java, jvm

Se eu executar um programa java, a VM inicialmente aloca memória para o heap, certo?

toda vez que a memória usada levaria mais do que disponível, o heap é aumentado, certo?

é possível que o heap fique menor, uma vez que menos memória seja usada?

obrigado!

Respostas:

5 para resposta № 1

Sim, o coletor de lixo é livre para reduzir o tamanhode heap se descobrir depois de poucas coletas que o aplicativo demanda por memória muito menor que o heap configurado. Você pode observar este recurso no VisualVM, aqui testado com uma instância do Tomcat ab:

Memória VisualVM

Como você pode ver o tamanho do heap (série laranja)muda basicamente após cada GC (queda na série azul). Às vezes, o tamanho do heap aumenta, às vezes diminui. A JVM está livre para ajustar o tamanho com base no uso real (aqui, o tamanho total do heap foi definido como 1G).


0 para resposta № 2

Bem, o processo Java começa com uma inicialalocação de memória para heap e uma alocação máxima para o dito heap. É o que você passa através dos argumentos de linha de comando -Xms e Xmx jvm, que não podem mudar durante a execução do processo.

A quantidade real de memória usada por suas instâncias de objeto pode diminuir após uma coleta de lixo.