Я следил за этой статьей Проверка размера оперативной памяти для моего Java-приложения облачного литейного производства, работающего на Ubuntu LTS 14.04. Из того, что я понимаю, физическая память экземпляра, выполняющего мой процесс Java, составляет 32g. Для приложения Java я указал размер кучи как 1g. Когда я смотрю на вывод команды top
, я вижу, что она имеет 3,221,372 КиБ, что составляет 3g.
Есть ли логическое объяснение
Почему процесс Java использует память 3g virt при наличии достаточной физической памяти и
Почему процесс Java использует больше памяти, чем 1 г, я указал?
Результат grep MemTotal /proc/meminfo | awk '{print $2 / 1024}'
32170.2
Результат вывода команды top
:
Tasks: 5 total, 1 running, 4 sleeping, 0 stopped, 0 zombie
%Cpu(s): 46.2 us, 43.2 sy, 0.0 ni, 1.7 id, 0.3 wa, 0.0 hi, 8.5 si, 0.2 st
KiB Mem: 32942284 total, 27706852 used, 5235432 free, 357028 buffers
KiB Swap: 32949308 total, 2546016 used, 30403292 free. 6546428 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7 vcap 10 -10 3221372 108524 11936 S 1.7 0.3 1:31.17 java
Результат free -g
total used free shared buffers cached
Mem: 31 26 4 0 0 6
-/+ buffers/cache: 19 11
Swap: 31 2 28