Я проанализировал потребление памяти Java-программой в Linux Mint. Я использовал top
для сбора статистики памяти (память, используемая программой, а также общесистемные индикаторы, такие как total_mem_used и mem_free). Результаты оказались неожиданными:
RAM_USE_DELTA
на диаграмме) увеличилась, а «свободная физическая память» (возврат RAM_FREE_DELTA
на диаграмме) уменьшилась на ту же величину, что и RES ( P_RSS
на диаграмме) увеличилось - это то, что я ожидал P_DATA
на диаграмме) (описанное в top
's man как " объем физической памяти, выделенной для кода, отличного от исполняемого), был на 150 мегабайт выше RES. SWAP_USE_DELTA
на графике) все время был равен нулю P_SHR
на графике) был меньше 15 МБ Вопрос в том, что было засчитано в вышеупомянутые 150МБ? Виртуальный (зарезервированный, но не выделенный) стек? Файлы с отображением памяти? Как я писал ранее: RES
~ RAM_USED_DELTA
поэтому объем свободной памяти НЕ уменьшился на 150 МБ, поэтому это может указывать на виртуальную память, но было бы странно, чтобы индикатор памяти был суммой набора резидентов и виртуальной суммы...
(на этом графике линии, описанные *_DELTA
, относятся к началу программы, т.е. близко к левой стороне, где начинается красный P_RSS
)