У нас есть приложение Java как долго выполняющиеся службы (фактическое до времени для этой виртуальной машины Java 31 дней 3 часа 35 мин)JVM утечка памяти вне кучи и пулов буферов
Благодаря окнам Taskmanager процесса использует 1075384320 B - почти один ГБ.
Heap размера виртуальной машины Java ограничиваются 256 МБ (-Xmx256m)
данные памяти
Memory:
Size: 268,435,456 B
Max: 268,435,456 B
Used: 100,000,000 up to 200,000,000 B
- нет утечки здесь
буферных пулов
Direct:
Count: 137
Memory Used and Total Capacity: 1,348,354 B
Mapped:
Count: 0
Memory Used and Total Capacity: 0 B
- нет утечки здесь
мой вопрос: где же JVM использует дополнительную память?
Дополнительная информация:
Java: version 1.8.0_74 32 bit (Oracle)
Classes:
Total loaded: 17,248
Total unloaded: 35,761
Threads:
Live: 273
Live peak: 285
Daemon: 79
Total started: 486,282
После перезагрузки он занимает несколько дней для размера процесса расти, поэтому, конечно, очередной перезагрузки поможет, и, возможно, используя более новую версию Java также может решить проблему , но я хотел бы получить объяснение этого поведения, например. г. известная ошибка в 1.8.0 до 111, зафиксированная в ... - Я еще ничего не нашел.
Мы используем около 350 таких установок в разных местах, поэтому изменение не так просто.
Взгляните на используемую память с помощью jvisualvm. Вы находите его в JDK_HOME/bin. Затем вы можете рассчитать живые примеры ваших занятий. –
Что вы думаете, куда я иду выше данных? –
Как вы видите выше загруженные классы - 17.248; Metaspace потребляет около 58 M. –