Windows 8 High System Использование памяти
Моя проблема кажется простой. Мой компьютер использует больше физической памяти, чем фактически учитывается в сумме моих программ.
! (Работает windows 8.1, последние патчи)
Я использую 7,5 ГБ. Общее использование 12 ГБ. Дельта составляет 4,5 ГБ. Это то, что я считаю очень высоким.
Большинство постов, которые я нашел на этом сайте, касаются утечек памяти драйверов, влияющих на "выгружаемый пул" и "невыгружаемый пул", что приводит к высокой загрузке. Однако мой пул страниц + невыгружаемый составляет около 650 МБ, что, как я понимаю, не намного выше "нормального", и не должно вызывать эту дельту 4,5 ГБ. Для дальнейшего изучения этого я даже побежал poolmon.exe
и не нашел таких неплотных драйверов, когда я сортировал по использованию.
Поэтому мой вопрос прост: что дает? Где ты память?
Обновить:
Добрый пользователь направил меня к программе rammap, которая дает более подробное описание распределения памяти. Запустив его, я обнаружил, что 2 ГБ памяти в разделе "используется" было выделено для "Mapped Files", что, как я полагаю, является кэшированием на диске. Перейдя на вкладку "физические страницы" и отсортировав по указанным файлам, я узнал, что многие из активных отображенных файлов были файлами, используемыми торрент-приложением, содержащим большие файлы данных. Завершение приложения высвободило 1,2 ГБ кеширования диска в "режим ожидания", что дает скриншот, который вы можете увидеть ниже.
"Дельта" уменьшилась до 3,2 ГБ, что приближается к тому, что я считаю нормальным, но все еще находится на верхней стороне, хотя, если вычесть оставшуюся часть "сопоставленного файла" 800 МБ, вы получите 2,4 ГБ, что может быть просто объяснено неправильным подсчетом, указанным в разделе "Пользователи" в диспетчере задач.
С этой информацией теперь я не уверен. Это только я не понимаю учета памяти? Действительно ли раздел "разделяемый" в таблице используется пользовательскими программами и просто не учитывается в пространстве пользователя в диспетчере задач? Если так, то эта проблема была бы смесью того, что я не знал, что кэширование диска может учитываться в разделе "Используется" / "Активно", а вкладка "Пользователь" в диспетчере задач является неточной.
1 ответ
Windows 8, как и почти все современные операционные системы, старается использовать как можно больше памяти. Зачем? Потому что любая неиспользованная память тратится впустую.
Если система имеет 8 ГБ памяти и использует только 7 ГБ, она ничего не получает. Это не может использовать 9 ГБ позже. Он просто навсегда потерял любую выгоду, которую мог бы получить от этих дополнительных 1 ГБ, если бы эта память была свободна.
Например, скажем, в вашей системе много свободной оперативной памяти, и вы запускаете какую-то программу. Когда программа заканчивается, система имеет два варианта. Он может сохранить программу (фактический исполняемый файл на диске) в памяти или освободить память, в которой хранится файл программы.
Если это освобождает память, оно должно пойти на то, чтобы освободить ее. Если он когда-нибудь захочет снова использовать эту память, он должен пойти на то, чтобы разгрузить ее. И если эта программа выполняется снова, она должна быть загружена с диска. Тройной гад.
Если он не освобождает память, ему не нужно заниматься ее освобождением. если он хочет использовать эту память для каких-то других целей, ему не нужно беспокоиться об ее освобождении, сохраняя шаг. И если программа выполняется снова, ее не нужно загружать с диска. Тройная победа. И, конечно же, поскольку ни один процесс не запускает эту программу в настоящее время, память не будет связана с каким-либо процессом.
Итак, что происходит, так это то, что ваша система имеет достаточно свободной памяти, чтобы она могла работать очень эффективным образом, при этом она не тратит впустую усилия, освобождая память без необходимости, а затем не тратит усилия на освобождение свободной памяти для ее использования. Вместо этого он может эффективно переводить память из одного использования в другое, и если данные в этой памяти оказываются необходимыми, дискового ввода-вывода можно избежать.
Это победа вокруг. Память хранит данные, которые система надеется, что какой-то будущий процесс может оказаться полезным, а также избегает посторонних обращений по списку свободной памяти, чтобы освободить память, просто чтобы снова пометить ее как использованную. Современным операционным системам нужно только оставить очень маленький объем свободной памяти, достаточный для обработки чрезвычайных ситуаций (таких как сбои страниц и запросы памяти из кода прерывания), когда она не может легко перевести память из одного использования в другое.