O que faria com que um processo java excedesse em muito o limite de Xmx ou Xss?

Eu tenho 7 daemons java diferentes que eu corro (todos os 7) em 3 servidores diferentes. A linha de comando do java tem -Xmx2048m e -Xss1024k. Nesses 3 servidores, todos os 21 processos mostram pouco menos de 2,5 GB para o tamanho da VIRT no topo e no topo. O tamanho do RES varia de 300 a 1,9 GB, de acordo com o qual o daemon é.

Isso é tudo como deveria ser.

Digite o novo servidor. CPU mais rápida, mais RAM (16 GB em vez de 8 GB), um pouco mais recente em java (1.6.0_10-b33 nos servidores antigos, 1.6.0_31-b04 no novo servidor). Ambos os sistemas (e JVMs) são 64 bits.

Movido 2 dos daemons para o novo servidor. No novo servidor, dada a mesma tarefa, os daemons estão consumindo muito mais CPU (com o valor de um núcleo) e ficando menos concluídos. (Movido de 5110 processadores nos sistemas antigos para 5620s no novo).

Praticamente um núcleo extra de uso da CPU (thread de GC ??) e geração de relatórios de 5 GB de VIRT e 2 GB de RES para um daemon e 10,5 GB de VIRT e 2 GB de RES para o outro daemon.

Alguma idéia do que faria com que java ignorasse (ou parecesse ignorar se esse é o caso) os limites de memória?

questionAnswers(1)

yourAnswerToTheQuestion