Что может привести к значительному превышению 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 игнорировать (или, кажется, игнорировать, если это так) ограничения памяти?