странная потеря памяти во встроенном Java с Linux - PullRequest
0 голосов
/ 23 февраля 2019

Я наблюдаю за свободной памятью моей встроенной системы linux (ядро 2.6), где работает "oracle Встроенная Java 1.8 (compact3)".Java работает нормально, а потребление памяти (RAM) находится на постоянном уровне.
Я отслеживаю «свободные» и «кэшированные» значения команды free в оболочке.

Как показано на прилагаемом изображении, память остается на определенном уровне (синий - это «свободный», а оранжевый - «кэшированный», поэтому верхняя граница - это общий объем свободной памяти, доступной для Linux)
Память читается каждые 20 секунд.
Теперь, примерно через 7:45 часов работы с Java-VM, происходит странное падение свободной памяти.
Я не вижу увеличения ни кучи Java, ни какого-либо класса, который загружается в это время, - но память процесса java увеличивается примерно на величину отброшенной памяти (~ 4 МБ).
Поведениепрограмма нормальная даже после сброса.
Кто-нибудь тоже наблюдал такое поведение или имеет объяснение этому?
образ свободной памяти linux

1 Ответ

0 голосов
/ 23 февраля 2019

Это, вероятно, вызвано увеличением области кучи для выполнения некоторого выделения виртуальной машиной Java (либо из-за внутренних потребностей, либо от имени программы, выполняющейся внутри), которое не может быть выполнено ранее отображенной областью кучи.Большинство менеджеров оперативной памяти не возвращают память обратно в ОС (путем удаления части области кучи) после ее освобождения программой, вместо этого память сохраняется для будущего использования.

Плохой сигнал, если потребление памяти постоянно увеличиваетсясо временем - это может быть признаком утечки памяти.Но не стоит беспокоиться только об одном увеличении размера процесса.

...