O heap da Java™ virtual machine (JVM) é uma alocação de memória independente que pode reduzir a capacidade do heap de memória principal.
A partir do WebSphere Message Broker Versão 6.1 em diante, a JVM é criada com um mínimo de 32 MB de espaço e um máximo de 256 MB, alocados e reservados para sua utilização. Como ocorre com qualquer JVM, é possível transmitir parâmetros para configurar os tamanhos de heap mínimo e máximo. Observe que, em plataformas de 32 bits, a JVM reserva espaço de heap baseado no tamanho de heap máximo. No Windows de 32 bits, você poderá ter avisos, se configurar o tamanho de heap da JVM para 512 MB ou superior.
Você pode precisar aumentar o tamanho de heap máximo alocado se você planejar executar mensagens grandes através dos nós primitivos Java listados acima.
Para oferecer mais capacidade a um fluxo de mensagens que processará mensagens grandes, reduza o tamanho mínimo de heap de JVM para permitir que o heap de memória principal ocupe mais de um espaço de endereço. Para obter detalhes de como reduzir o tamanho de heap mínimo da JVM, consulte Configurando o Tamanho de Heap da JVM.
Os indicadores chave de uma configuração de heap da JVM bem-sucedida são:
Os requisitos sobre esses dois valores variam de acordo com o que você está tentando obter; para um aplicativo em lote, uma sobrecarga de GC baixa seria importante, mas os tempos de pausa seriam menos relevante. Para os aplicativos em tempo real, os tempos de pausa são mais importantes do que a sobrecarga de GC geral.
É frequentemente possível obter sobrecargas de GC de menos de 1 por cento e os tempos de pausa de mais de 1 segundo (com a exceção de ciclos de compactação). Normalmente, se a sobrecarga de GC é maior que 10 por cento, pode ser reduzida pelo ajuste. Os tempos de pausa de mais de 2 segundos são geralmente evitáveis, geralmente por ajuste para evitar a compactação.
Os valores ideais para qualquer situação só podem ser determinados por experiências com valores e monitoramento dos resultados, porque há muitas variáveis, incluindo a complexidade do fluxo de mensagens e o tamanho das mensagens processadas.
Você pode começar executando uma única instância do fluxo de mensagens, usando o tamanho de heap padrão e, em seguida, aumentando o tamanho da mensagem e o número de instâncias, de uma maneira controlada, para seus valores máximos. Assegure-se de fazer uma alteração de cada vez. Enquanto estiver fazendo isso, uso de heap da JVM do monitor e a atividade de GC usando estatísticas de recursos para assegurar que o tamanho de heap seja suficientemente grande para processar as mensagens maiores sem exceder os destinos para a sobrecarga de GC e tempos de pausa de GC. Assegure-se também de monitorar o uso de heap da JVM em uma base regular, e assegure-se de que os limites recomendados não estejam sendo excedidos.
Para análise mais detalhada, é possível usar o Java Health Center, disponível por meio do IBM Support Assistant.