Что может привести к значительному превышению Java-процессом Xmx или Xss-лимита?

У меня есть 7 разных java-демонов, которые я запускаю (все 7) на 3 разных серверах. В командной строке Java есть -Xmx2048m и -Xss1024k. На этих 3 серверах все 21 процесса показывают чуть менее 2,5 ГБ для размера VIRT сверху и снизу. Размер RES варьируется от 300 до 1,9 ГБ в зависимости от того, какой это демон.

Все так и должно быть.

Введите новый сервер. Более быстрый процессор, больше оперативной памяти (16 ГБ вместо 8 ГБ), немного более новая версия Java (1.6.0_10-b33 на старых серверах, 1.6.0_31-b04 на новом сервере). Обе системы (и JVM) являются 64-битными.

Переместил 2 демонов на новый сервер. На новом сервере, выполняющем ту же задачу, демоны потребляют значительно больше ЦП (примерно на уровне ядра) и выполняют меньше задач. (Переведено с 5110 процессоров на старых системах на 5620-е на новой).

Достаточно много дополнительного ядра процессора (поток GC ??) и отчет 5 ГБ VIRT и 2 ГБ RES для одного демона и 10,5 ГБ VIRT и 2 ГБ RES для другого демона.

Есть идеи, что заставило бы Java игнорировать (или, кажется, игнорировать, если это так) ограничения памяти?

Ответы на вопрос(1)

Ваш ответ на вопрос