Pergunta

Im curioso o que o significado exato de memória "cometido" é quando o valor é consultado a partir da classe MemoryUsage. Essa classe explica-lo como "comprometido representa a quantidade de memória (em bytes) que está garantido para estar disponível para uso pela máquina virtual Java." Será que isso significa que a memória está em uso pelo processo JVM e não está disponível para outros processos até que seja liberado pelo processo de java, ou que significa que o processo de java será bem sucedido se ele tenta alocar até essa quantidade de memória ? Sei que isso pode ser implementação específica, mas eu só estou interessado em hotspot.

Foi útil?

Solução

O tamanho comprometida é a memória realmente alocada, o tamanho utilizado é o tamanho usado para armazenar dados reais (quando usado ~ = comprometidos É hora de grande GC e, possivelmente, o crescimento da pilha). O tamanho máximo é o limite rígido ao qual a pilha pode crescer -. Se não é suficiente a JVM lança OutOfMemoryError

Se a memória está empenhada em seguida, ele definitivamente pode ser usado. Além disso, a única ocasião em que JVM não seria capaz de cometer mais memória (em um sistema operacional moderno) é se o hardware está sem memória virtual.

Todos estes tamanhos apenas dizer-lhe o tamanho da região de heap. O JVM tem outras regiões de memória, bem como (pilhas threads, cache JIT, etc.) A região pilha é geralmente maior, o que corresponde aproximadamente ao pegada processo.

Duas notas:

  • Se o tamanho comprometida não se encaixa na memória física, partes dele será trocado para o arquivo página. Isto leva a grande desaceleração durante a GC e, nesses casos, você irá melhorar o desempenho aplicativo, reduzindo o tamanho da pilha.
  • Alguns sistemas operacionais permitem dupla reserva de memória - você pode alocar tanto quanto você quiser, desde que você não tentar usá-lo (esqueci qual sistema operacional que era - alguém preenchimento me in)

Outras dicas

"Isso significa que a memória está em uso pelo processo JVM e não está disponível para outros processos" seria o correto. Portanto, a sua a menos (ou igual) a quantidade de memória do sistema operacional vê como tomada pelo processo de JVM.

http://java.sun.com /j2se/1.5.0/docs/guide/management/jconsole.html (desculpe não âncoras de vincular a).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top