Pergunta

Eu tenho um servidor de aplicativos Tomcat que está configurado para criar um despejo de memória no OOM e ele é iniciado com -xmx1024m, para que um gigabyte esteja disponível para ele.

Agora eu encontrei um desses dump e ele contém apenas 260 MB de memória não retirada. Como é possível que o despejo seja muito menor que o tamanho que ele deveria ter disponível?

Foi útil?

Solução

O espaço permgen é gerenciado independentemente da pilha e pode acabar mesmo quando há muita memória gratuita em geral. Algumas estruturas da Web (especialmente JSF) são porcos reais e, embora facilmente façam com que a configuração padrão acabasse. Pode ser aumentado com -xx: maxpermsize = ### m

Lembre -se de que o espaço do sistema é restrito pela soma de heap e permgen, para que você possa consumir menos recursos totais antes de começar a obter a exceção de oom de encadeamento nativo se você não diminuir a pilha pelo aumento da quantidade.

Outras dicas

Somente informações sobre o uso da memória alocada serão despejadas em um arquivo. Um despejo de heap não é uma imagem binária da sua pilha, contém informações sobre tipos de dados etc. e pode exceder sua memória disponível.

Texto (clássico) Formato de arquivo heapdump

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