На этот вопрос уже есть ответ здесь:
Диспетчер задач показывает мое общее использование памяти на уровне 90% от общего объема в 6 ГБ, но ни один процесс не использует более 250 МБ ОЗУ, а сумма использования ОЗУ всеми запущенными процессами составляет менее 2 ГБ. Я пробовал:
- Посмотрите на цифры в столбце «Память» на вкладке «Процессы» диспетчера задач Windows 8.
- Посмотрите на столбцы «Рабочий набор», «Частный рабочий набор», «Общий рабочий набор» и «Размер фиксации» на вкладке «Подробности» диспетчера задач.
- Глядя на похожие столбцы, связанные с памятью в Process Explorer.
- Я пытался запустить Sysinternals RAMMap, но, несмотря на кризис с нехваткой памяти, он вылетает при запуске. Как только я решу проблему, RAMMap будет работать нормально, но на этом этапе уже слишком поздно.
Все показывают довольно небольшое количество используемой памяти.
Есть много людей, задающих варианты этого вопроса, с различными версиями окон, по всему Интернету. Некоторым из них удается решить проблемы с нехваткой памяти, часто путем переустановки программного обеспечения; иногда путем переустановки windows с нуля. Я ищу ответ на общие вопросы, которые все они разделяют, и которые, кажется, никогда не получают ответа в другом месте:
- Почему общая используемая память намного выше, чем память, используемая всеми перечисленными процессами, независимо от того, как я пытаюсь их подсчитать?
- Как Windows может «знать», что память используется, не зная, какая программа ее использует?
- Какие процессы могут использовать память, но не отображаться в списке?
- Есть ли какое-либо программное обеспечение, которое может дать больше информации об используемой памяти?
Подробности, относящиеся к моей собственной проблеме: После обновления до Windows 8.1 проблема возникает, как только я вхожу в систему. У меня заканчивается память, как только я запускаю любую программу. Я заметил в Process Explorer, что несколько экземпляров iexplore.exe были запущены, по-видимому, автоматически. Один конкретный случай использовал только несколько МБ ОЗУ, но показал сотни миллионов сбоев страниц. По какой-то причине я убил этот конкретный процесс, и использование памяти сразу упало на 70%.
Ведущий к одному конкретному вопросу:
- Как могло убить один процесс, который предположительно использовал только несколько МБ, освободив несколько ГБ?
И (предположительно сложный) бонусный вопрос:
- Если не считать переустановки Windows, как я могу избежать необходимости проходить это каждый раз при перезагрузке компьютера?
источник
Ответы:
Кстати, вы должны стараться не использовать термин «память». Это создает много путаницы. Если вы имеете в виду физическую память, скажите «физическая память» или «RAM». Если вы имеете в виду виртуальную память, так и скажите. Если вы имеете в виду бэк-магазин, так и скажите.
Потому что операционная система не тратит впустую физическую память (RAM), если у нее нет выбора.
Потому что ни одна программа не использует его. Рассмотрим, например, память, которая содержит код для программы, которая только что завершилась. Ни одна программа не использует его. Но эта память используется, поскольку она не свободна и содержит данные, которые могут быть полезны (в случае, если программа снова запустится).
Это не используется процессами.
RAMMap может сделать это.
Есть только две возможности, RAM может быть использована или потрачена впустую. Очевидно, что первый лучше. Любая свободная память тратится впустую - машина объемом 4 ГБ не может использовать 2 ГБ сегодня, чтобы завтра использовать 6 ГБ. Если вы думаете: «Я хочу сейчас бесплатно, чтобы потом использовать его», забудьте об этом. Вы можете использовать его сейчас и использовать его позже.
Вам не хватает резервного хранилища, а не физической памяти. У вас достаточно свободной физической памяти, но недостаточно резервного хранилища для ОС, чтобы продолжать выделять виртуальную память, которая может потребовать резервного копирования.
В процессе использовалось всего несколько МБ физической памяти, но ОС могла бы зарезервировать для него несколько ГБ резервной виртуальной памяти. Например, предположим, что процесс создает доступное для записи сопоставление частной памяти файла размером 2 ГБ. Операционная система должна зарезервировать 2 ГБ резервной виртуальной памяти для процесса, поскольку она может записывать каждый байт этого отображения. Кроме того, он может никогда не написать ни одному из них. Вот почему вам нужен файл подкачки хорошего размера.
Современные операционные системы пишут много проверок (многообещающее резервное хранилище), которые никогда не будут обналичены (требуется оперативная память). Вы не можете продолжать выписывать чеки (многообещающее резервное хранилище), даже если у вас много денег в банке (свободная оперативная память), если вы уже написали кучу больших чеков, которые могут или не могут быть обналичены (обещали столько же резервного хранилища) как у тебя). Файлы подкачки добавляют резервное хранилище, позволяя ОС продолжать писать чеки.
источник