7

Я использую SUSE, у меня 31 ГБ памяти. Mem: всего 31908592k, использовано 31429632k, 478960k свободно, 12176k буферов. Как узнать, какой процесс поглощает всю мою память.

3 ответа3

8

Запустите top , затем нажмите Shift O , затем N , затем, наконец, Enter. Нажмите Q, когда вы хотите выйти.

И не забывайте:«Linux съел мою оперативную память!"

7

Похоже, ты бежишь free , смотришь на первую строчку и волнуешься. Это нормально; многие люди делают это.

Игнорировать первую строку вывода из free . В самом деле. Linux очень агрессивно относится к кешированию данных с диска, даже включая "выгруженные" страницы виртуальной памяти, в ОЗУ, и все эти кэшированные данные считаются "использованными" в первой строке free , даже если их можно снова сделать доступными в микросекунда (или меньше, в эти дни), если это необходимо.

Вы должны смотреть на вторую строку вывода из free , помеченную как -/+ buffers/cache: Это строка, которая скажет вам, сколько памяти фактически связано с запуском программ, игнорируя то, что в данный момент используется буферами и кешем.

Например, моя машина в настоящее время показывает:

             total       used       free     shared    buffers     cached
Mem:       3083924    2177300     906624          0     461344     837008
-/+ buffers/cache:     878948    2204976
Swap:      4000148          0    4000148

Хотя в настоящее время только 906624 байта ОЗУ полностью не используются, есть еще 461344 байта буферов и 837008 байтов кэшированных данных, которые можно сделать более или менее доступными мгновенно, если что-то более важное (т. Е. Почти все ) нуждается в памяти, давая мне в общей сложности 2204976 байт, фактически доступных для меня.

1

Используйте top команду. Он показывает список всех запущенных процессов, отсортированный по тем, которые используют больше всего процессоров по умолчанию. Если вы нажмете Shift M, он изменит сортировку по использованию памяти. Вы увидите главных нарушителей памяти в верхней части списка.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .