2014-03-11 02:46:08 +0000 2014-03-11 02:46:08 +0000
104
104

Почему общая сумма использования памяти, сообщаемая диспетчером задач Windows, намного выше, чем сумма использования памяти всеми процессами?

Task Manager показывает мое общее использование памяти на 90% от 6 ГБ, но ни один процесс не использует более 250 МБ оперативной памяти, а сумма использования оперативной памяти всеми запущенными процессами составляет менее 2 ГБ. Я пытался:

  • Просмотрел цифры в колонке “Память” на вкладке “Процессы” диспетчера задач Windows 8.
  • Глядя на “Набор”, “Приватный набор”, “Общий набор” и “Зафиксировать размер” столбцов на вкладке “Детали” Менеджера Задач.
  • Просмотр аналогичных столбцов, связанных с памятью, в Проводнике процессов.
  • Я пробовал запустить Sysinternals RAMMap, но пока у меня кризис низкой памяти, она ломается при запуске. Как только я решаю проблему, RAMMap работает нормально, но на этом этапе слишком поздно.

Все показывают довольно небольшой объем используемой памяти.

Множество людей задают варианты этого вопроса, с разными версиями окон, по всему интернету. Некоторым из них удается решить свои проблемы с низкой памятью, часто путем переустановки программного обеспечения, иногда путем переустановки окон с нуля. Я ищу ответы на общие вопросы, которые все они разделяют, и на которые, похоже, никогда не получают ответов в других местах:

  1. Почему общая используемая память намного больше, чем память, используемая всеми перечисленными процессами, независимо от того, как я пытаюсь их сосчитать?
  2. Как могут окна “знать”, что память используется, не зная, какая программа ее использует?
  3. Какие процессы могут использовать память, но не появляются в списке?
  4. Есть ли программное обеспечение, которое может дать больше информации об используемой памяти?

Подробности, специфичные для моей собственной проблемы: После перехода на Windows 8.1, проблема возникает, как только я вхожу в систему. У меня заканчивается память, как только я запускаю любую программу. Я заметил в Process Explorer, что несколько экземпляров iexplore.exe были запущены, по-видимому, автоматически. Один конкретный экземпляр использовал всего несколько мегабайт оперативной памяти, но показал сотни миллионов ошибок страницы. По прихоти я убил этот конкретный процесс, и использование памяти сразу же сократилось на 70%.

Переходим к одному конкретному вопросу:

  • Как можно убить один процесс, который предположительно использовал всего несколько мегабайт, освободив несколько гигабайт?

И (предположительно сложный) бонусный вопрос:

  • Как избежать переустановки Windows каждый раз, когда я перезагружаю компьютер?

Ответы (1)

6
6
6
2014-03-11 05:23:42 +0000

Кстати, постарайтесь не использовать термин “память”. Это создает много путаницы. Если вы имеете в виду физическую память, то скажите “физическая память” или “оперативная память”. Если вы имеете в виду виртуальную память, скажем так. Если вы имеете в виду “память”, скажите так.

Почему общая используемая память намного больше, чем память, используемая всеми перечисленными процессами, независимо от того, как я пытаюсь их сосчитать?

Потому что операционная система не тратит физическую память (RAM) впустую, если у нее нет выбора.

Как окна могут “знать”, что память используется, не зная, какая программа ее использует?

Потому что ни одна программа ее не использует. Рассмотрим, например, память, содержащую код только что завершенной программы. Ее не использует ни одна программа. Но эта память используется, так как она не свободна и содержит данные, которые могут быть полезны (в случае повторного запуска программы).

Какие процессы могут использовать память, но теперь появились в списке?

Она не используется процессами.

Есть ли какое-нибудь программное обеспечение, которое может дать больше информации об используемой памяти? RAMMap может это сделать.

Есть только две возможности, оперативная память может быть использована или она может быть потрачена впустую. Очевидно, что первый вариант лучше. Любая свободная память будет потрачена впустую навсегда - машина с 4 ГБ не может использовать 2 ГБ сегодня, чтобы использовать 6 ГБ завтра. Если вы думаете: “Я хочу освободить ее сейчас, чтобы использовать ее позже”, забудьте об этом. Вы можете использовать его сейчас и использовать его позже.

Как можно убить один процесс, который предположительно использовал только несколько мегабайт бесплатно до нескольких гигабайт?

У вас заканчивается резервное хранилище, а не физическая память. У вас много свободной физической памяти, но резервного хранилища недостаточно для того, чтобы операционная система могла выделять виртуальную память, для которой может потребоваться резервное копирование.

В процессе использовалось всего несколько мегабайт физической памяти, но ОС, возможно, пришлось зарезервировать для этого несколько гигабайт виртуальной памяти. Например, предположим, что процесс создает записываемое частное отображение памяти 2GB файла. Операционная система должна зарезервировать 2 Гб виртуальной памяти для этого процесса, потому что она может записать каждый отдельный байт этого отображения. Также, она может никогда не записывать ни в одно из них. Вот почему вам нужен файл подкачки хорошего размера.

Современные операционные системы пишут много чеков (перспективное хранилище подложек), которые никогда не будут обналичены (требуется оперативная память). Вы не можете продолжать выписывать чеки (перспективный бэк-магазин), даже если у вас много денег в банке (свободная оперативная память), если вы уже выписали кучу больших чеков, которые могут обналичиваться, а могут и не обналичиваться (обещан столько же бэк-магазина, сколько у вас есть). Файлы страниц добавляют хранилище резервных копий, позволяя операционной системе продолжать выписывать чеки.

Похожие вопросы

8
19
13
6
3