¿Qué haría que un proceso java exceda en gran medida el límite de Xmx o Xss?

Tengo 7 demonios java diferentes que ejecuto (todos los 7) en 3 servidores diferentes. La línea de comandos de java tiene -Xmx2048m y -Xss1024k. En estos 3 servidores, los 21 procesos muestran menos de 2.5 GB para el tamaño de VIRT en la parte superior y superior. El tamaño del RES varía de 300 a 1.9 GB según el daemon que sea.

Eso es todo como debería ser.

Ingrese el nuevo servidor. CPU más rápida, más RAM (16 GB en lugar de 8 GB), java ligeramente más reciente (1.6.0_10-b33 en los servidores antiguos, 1.6.0_31-b04 en el nuevo servidor). Ambos sistemas (y JVM) son de 64 bits.

Se movieron 2 de los demonios al nuevo servidor. En el nuevo servidor, dada la misma tarea, los demonios consumen mucho más CPU (alrededor del valor de un núcleo) y hacen menos cosas. (Pasó de 5110 procesadores en los sistemas antiguos a 5620s en el nuevo).

Más o menos un núcleo completo adicional de uso de la CPU (subproceso GC ??) e informes de 5 GB VIRT y 2 GB RES para un daemon y 10.5 GB VIRT y 2 GB RES para el otro daemon.

¿Alguna idea de lo que haría que Java ignore (o parezca que ignore, si ese es el caso) los límites de memoria?

Respuestas a la pregunta(1)

Su respuesta a la pregunta