Я знаю, что VSZ ps
предназначен для общего адресного пространства, выделенного для приложения, и иногда его называют псевдонимом vsize (упомянуто на странице руководства ps
по Linux), но каково определение VSIZE top
? Этот верхний вывод на iPhone отличается от верхнего на Linux:
PID COMMAND %CPU TIME #TH #PRTS #MREGS RPRVT RSHRD RSIZE VSIZE
1875 emma 0.0% 0:30.83 7 139 932 17868K 5328K 29M 181M
root# ps -eo pid,rss,vsz|grep 1875
1875 29324 441324
top
на IOS не включает общие объекты в vsize, или что-то.Ответы:
Система памяти Linux заполнена многими подпрограммами утилит оптимизации памяти и совместного использования памяти, что делает саму идею о том, как память распределяется и используется между ними, громоздким подходом. Вывод ps и других связанных с ps команд все обрабатывают их вывод из данных под
/proc
файловой системой. в частностиps
RSS, (резидентный размер памяти) и VSIZE (размер виртуальной памяти) оба важны, однако VSIZE не показывает точное использование памяти, и разница между VSIZE и rss является тем, что фактически предназначено и выделено программе во время инициализации, но может быть еще не ссылка. Например, программа может иметь множество связанных библиотек, но они еще не загружены, потому что на них еще нет ссылок в реальном времени выполнения программы. RSS дает общий объем памяти, фактически используемый программой, но может не дать истинную картину потребления памяти, поскольку большая часть выделенной памяти может использоваться совместно с другими экземплярами того же процесса или других процессов. Взгляд вниз/proc/<processid>/maps
может дать приблизительное представление о том, как использовалась память, но иногда они могут вводить в заблуждение. использованиеpmap -x <pid>
из командной строки, полезно увидеть распространение.Часто лучшие утилиты
free
иvmstat
.free
предоставит вам общую информацию о текущем потреблении памяти, а vmstat поможет вам узнать, как часто оно обновляется.источник