Я работаю с приложением Java на хосте, у которого заканчивается память и происходит сбой JVM.
JVM равен 8. Например, я установил Xms и Xmx на 10240m на хосте 16 ГБ (под управлением Linux).Со временем я отслеживаю кучу JVM (например, с помощью JMX или java-агента), и использование остается постоянным и в определенных пределах.GC работает регулярно и очищается, и ни одно из пространств памяти не имеет тенденцию к росту во времени.
Но в операционной системе хоста я отслеживаю использование памяти - через параметры ps
- vsize
и size
оставайтесь последовательными, но pmem
увеличивается со временем (и я думаю, что rss
тоже, но только начал его отслеживать).pmem использует 99%, а затем jvm не может выделить память и завершает работу.Я подозреваю, что rss
будет увеличиваться со временем (он уже начал двигаться в этом направлении).
Указывает ли это на утечку памяти в приложении Java, которое выполняет JVM?Я предполагаю, что у самой JVM вряд ли будет утечка памяти.Агент, работающий на -javaagent
, довольно широко используется, так что не думайте, что это так.Это будет хорошее предположение?Если это утечка памяти на уровне приложения, что за утечка может быть, или как можно найти ее?Кажется, что-то вроде JMX ничего не дает, похоже, что это что-то выделенное в памяти, о чем JVM не знает.
Спасибо.