Как говорится, «это сложно».
Linux использует неиспользуемую память для буферизации и кэширования диска. Это ускоряет вещи. Но вам может понадобиться взглянуть на строку - / + buffers / cache из free .
'ps' может показать вам, для любого данного процесса или для всех процессов, % CPU , % mem , совокупное время процессора , rss (размер резидентного набора, физическая память без перестановки, которая используется процесс), размер ( очень приблизительный объем пространства подкачки, который потребуется, если процесс будет загрязнять все записываемые страницы и затем будет заменен) , vsize (использование виртуальной памяти всего процесса (vm_lib + vm_exe + vm_data + vm_stack)) и многое другое.
Для любого данного процесса вы можете cat / proc / $ PID / status - он удобочитаемый для человека - и проверить VmSize , VmLck , VmRSS , VmData , VmStk , VmExe , VmLib и VmPTE значений, наряду с другими ...
Но это только для начала ... Процессы могут выделять память, но не использовать ее. (Память может быть выделена, но страницы памяти не создаются / не выдаются, пока они на самом деле не используются. Все это по требованию.)
Процессы могут отображаться в аппаратном пространстве, обнаруживая, что они используют большое количество памяти, которая фактически не поступает из системной памяти. (Известно, что X-серверы иногда делают это. Это что-то непонятное, включая драйверы ядра ...)
Это исполняемый файл, который обычно представляет собой файл с отображением в памяти. Это означает, что замененные части занимают ОЗУ, но при замене они никогда не занимают пространство подкачки.
Процессы могут иметь другие отображенные в память файлы ...
Есть библиотеки с общей памятью, где одни и те же страницы ОЗУ используются несколькими программами одновременно.
Итак, мы должны спросить, что касается памяти, что именно имеет значение, а что нет?