Слишком много памяти привыкает

13

Некоторое время я так себя чувствовал, мысленно глядя на менеджера задач, подсчитывая, сколько физической памяти нужно использовать, и замечая большое расхождение. Я наконец нашел время для его измерения. Взяв результаты списка задач и добавив, выдал около 3,87 ГБ. Диспетчер задач сказал мне, что я использую 4,6 ГБ памяти. Это похоже на большое несоответствие. Куда это делось?

РЕДАКТИРОВАТЬ: Таким образом, это ясно, он не собирается предварительной выборки. Также было высказано предположение, что это часть ОС, но не часть каких-либо системных процессов. Если это правда, пожалуйста, найдите способ заставить ОС сообщить мне, сколько памяти используется. Поскольку я хочу выяснить, куда делась память, просьба взглянуть на разницу ничего не делает для меня.

РЕДАКТИРОВАТЬ 2: Это не следующее:

  1. Ядро
  2. Кеш
  3. Аппаратная резервная память

Картинка ресурсов занята. Не совсем уверен, что он будет делать, но ... введите описание изображения здесь

soandos
источник
Какую ОС вы используете? Вы получите лучшие ответы с дополнительной информацией :)
Cam Jackson
Извинения см. Новый тег :)
soandos
@soandos: Вы пытались отключить суперзагрузку и перезагрузку? Есть ли разница?
user541686
Да, и нет, но было бы неплохо узнать, сколько занимает предварительная выборка памяти.
Soandos
2
Prefetch НЕ использует память, он кэширует наиболее используемый байт-код из скомпилированных приложений. Не отключайте его, иначе производительность вашей системы резко упадет.
Прорыв

Ответы:

5

Я предлагаю скачать Sysinternals Suite от Microsoft . Он включает в себя несколько утилит, которые предоставят вам больше информации, чем диспетчер задач. Посмотрите на утилиты Process Explorer, RAMMap, VMMap и Process Monitor. Чтобы получить от них наибольшую информацию, вам может потребоваться выполнить некоторые настройки, чтобы изменить отображаемую информацию.

Кроме того, поскольку вы интересуетесь памятью Windows, вот серия постов в блоге Марка Руссиновича , одного из разработчиков и основателей Sysinternals. Это поможет разобраться в информации, которую предоставляют утилиты.

Джо Интернет
источник
RAMMap, кажется, говорит мне, что диспетчер задач преувеличивает общее использование оперативной памяти примерно на 100 МБ, но в соответствии со списком памяти, который я могу извлечь с помощью списка задач, RAMMap также перегружается примерно на 200 МБ (список задач +200 = RAMMap, RAMMap + 100 = Taskmanger)
Soandos
1
Я не уверен в том, что вы видите, и я не на машине с Windows, чтобы разобраться в этом. Однако, если вы все еще хотите копать глубже, спросите на форумах Sysinternals. Там есть некоторые очень умные люди, которые очень "в" внутренности Windows. Они будут лучше знакомы с тонкостями управления памятью Windows.
Джо Интернет
Для дальнейшего использования, здесь TechEd 2011 Марка Руссиновича рассказывает об управлении памятью в Windows: channel9.msdn.com/Events/TechEd/NorthAmerica/…
Joe Internet
Этот «ответ», хотя и принят, но не отвечает на вопрос! Это просто предлагает инструменты и чтение для расследования.
Джейми Ханрахан
8

Windows 7 использует «неиспользуемую» память для предварительного кэширования и ускорения работы. Если вам понадобится эта память, она освободится.

Это особенность, а не ошибка;)

Из технета

Через некоторое время, когда вы используете систему Windows Vista, вы увидите небольшое число для счетчика свободной физической памяти на странице производительности диспетчера задач. Это связано с тем, что SuperFetch и стандартное кэширование Windows используют всю доступную физическую память для кэширования данных на диске. Например, при первой загрузке, если вы сразу же запустили диспетчер задач, вы должны заметить, что значение свободной памяти уменьшается с ростом числа кэшированной памяти. Или, если вы запустите программу, требующую памяти, и затем выйдете из нее (любой из бесплатных «оптимизаторов ОЗУ», которые выделяют большие объемы памяти, а затем освободят память, будет работать), или просто скопируете очень большой файл, Свободное число будет подъем и график использования физической памяти будет падать, когда система освобождает освобожденную память. Однако со временем SuperFetch снова заполняет кэш данными, которые были вытеснены из памяти,

Подмастерье Компьютерщик
источник
1
1) так почему это не указано в памяти для этого процесса? 2) откуда мне знать, что здесь дело?
Soandos
Я считаю, что SuperFetch находится под svchost. Это МОЖЕТ быть засчитано как память ядра. Вы можете попробовать включить и выключить SuperFetch, чтобы проверить.
Подмастерье Компьютерщик
Ничего не сделал
Soandos
Память, используемая Superfetch, находится в списке страниц режима ожидания и считается частью «Доступно». Он не считается «используемым», потому что его можно переназначить (вытащить из списка Standby и поместить в процесс), как и все остальное в списке Standby, а также все в списке Free и Zero.
Джейми Ханрахан
5

Цифры, которые вы видите, абсолютно неточны и должны приниматься только как показания.

Операционная система - чрезвычайно сложная сущность, и простая программа, такая как диспетчер задач, никогда не может рассчитать полное использование, многие ее части просто недоступны в режиме пользователя, в котором она выполняется. Некоторыми из элементов, которые ему недоступны или которые просто невозможно отнести к какой-либо «задаче», являются таблицы аппаратной сегментации, распределения совместно используемой памяти, выделенная ядром память, выделения памяти страниц, память устройства и многие другие.

Больше объяснений вы найдете в разделе Как интерпретировать вкладку «Быстродействие» диспетчера задач? , но я хочу процитировать эту часть:

Что вы ожидаете от программы, называющей себя «Диспетчер задач»? В ядре операционной системы нет ничего, что называется «задачей» - в ОС есть «процессы» и «потоки». У DOS были "задачи". Аппаратное обеспечение Intel имеет структуры «задач», но ОС не использует их, потому что это быстрее сделать самому.

Диспетчер задач - это очень старая программа для Windows, у которой есть проблемы даже с присвоением функций службам, и цифры, которые он показывает, должны быть взяты с большой долей соли. Вероятно, он упускает большие области памяти, которые он не может сосчитать или приписать какой-либо «задаче».

harrymc
источник
Так какую программу я должен использовать, чтобы понять это? PS Task Mangager имеет список памяти ядра.
Soandos
1
Нет ни одной программы, которая бы дала вам ВСЮ информацию. Диспетчер задач даст некоторую информацию и приблизительное значение, диспетчер устройств может рассказать об устройстве-памяти, WinObj об объектах памяти. Лучшим источником является монитор ресурсов, вызываемый на вкладке «Быстродействие» диспетчера задач (и в других местах), который фактически является современной заменой диспетчера задач.
harrymc
Менеджер ресурсов дает число в пределах 15 от менеджера задач.
Soandos
Они выглядят как единственные числа, которые вы можете получить из интерфейса Windows. Они не точны, но намного лучше, чем ничего. Они могут быть использованы для устранения неполадок (что я часто делаю), но не ожидайте, что они будут включать все.
harrymc
Представление, что Task Manager - это «очень старая программа для Windows», глупо. Он обновляется с каждой версией ОС, как и все остальное. Что касается «единственных цифр, которые вы можете получить», разве вы не использовали Performance Monitor?
Джейми Ханрахан
3

Как вы могли заметить, диспетчер задач может предоставить вам упрощенный снимок того, как большинство приложений влияют на вашу систему, но оставляет желать лучшего. Если вы действительно хотите копаться в кэшах в оперативной памяти и т. Д., Вам нужно попасть в Performance Monitor. Вам потребуется определенная работа для создания набора системных счетчиков для мониторинга вашей системы.

Вы можете попасть туда, запустив compmgmt.msc или выполнив поиск в Windows для «управления компьютером», а в левой части вы увидите дерево производительности, которое вы можете развернуть и изучить.

Вот ссылка на некоторые из доступных инструментов: http://technet.microsoft.com/en-us/library/cc749249.aspx

Вытираю пыль.
источник
Хотя я вижу, что это очень крутой инструмент, он может делать много вещей (о чем свидетельствует тот факт, что в памяти находится тонна счетчиков, но я понятия не имею, что я ищу. Любые идеи?
soandos
Кроме того, опция добавления счетчика имеет тенденцию прилипать к моему экрану, и мне приходится вручную менять разрешение назад и вперед, чтобы исправить его (обновление не работает). Не твоя вина, я знаю.
Soandos
3

Память, вероятно, используется для ядра. Используя Process Explorer, мы можем увидеть гораздо более подробную разбивку системной памяти:

Информация о памяти ядра

Здесь я выделил объем используемой ядром памяти, которая называется Paged WS + Nonpaged, или примерно ~ 300 МБ памяти. Это только что запущенная система с открытым веб-браузером и несколькими другими открытыми приложениями, хотя при большой нагрузке моя домашняя система легко ломает 500 МБ или даже 700 МБ памяти ядра.

Дарт Андроид
источник
Я смотрел на это, и это не дает достаточно. Однако, спасибо.
Soandos
Вы спрашиваете о разнице между номерами коммитов и физической памяти?
Дарт Андроид
Нет, я спрашиваю, почему, когда я запускаю разные инструменты, которые должны иметь одинаковые номера, я получаю разные номера.
Soandos
2

@soandos, ты учел, сколько памяти тянет видео? Вполне возможно, что видео тянет 0,73 ГБ ОЗУ. У вас есть приличная видеокарта на этой машине? Если нет, он будет использовать оперативную память, как это (насколько я знаю). Если я ошибаюсь, кто-нибудь, пожалуйста, звоните сюда, но я считаю, что это может быть следствием извлечения видео из ОЗУ.

Дэвид
источник
У меня есть Nvidia GTS 360M. Это не очень хорошая видеокарта, но она имеет ГБ памяти.
Soandos
Какой тип монитора вы используете, с каким разрешением вы используете? Кроме того, вы занимаетесь видео интенсивными заданиями, например играете в игры с разрешением 1080p? А какой тип памяти используется вашей видеокартой (например, DDR1, DDR2, DDR3, DDR5)? Я бы посмотрел это сам, но я попробовал это с чьей-то моделью видеокарты и заметил, что они сделали это с несколькими различными типами ОЗУ ...
David
Стандарт с компьютером, 1920х1080, без понятия. Есть ли способ просто измерить это?
Soandos
Обычно это скажут на упаковке, я не уверен. Если вы знаете точную модель карты, вы можете узнать в Интернете. Если это не очень мощная видеокарта (использующая DDR2, DDR1) и вы используете 1920x1080 с большим монитором (например, я использую телевизор Samsung 46 "TOC в качестве домашнего монитора), вы можете сжечь много памяти только на видео ... Я не уверен, есть ли способ узнать, сколько ОЗУ использует ваше видео. Хотя сейчас я проведу некоторые исследования по этому вопросу. Я прокомментирую, найду ли я что-нибудь или нет Я хочу помочь вам как можно больше.
Дэвид
В настоящее время я проверяю эту программу, чтобы увидеть, может ли она иметь то, что мы ищем. Это SiSoftware Sandra Lite 2011.2.17.47. В описании говорится, что он делает то, что мы ищем, например, сколько оперативной памяти потребляет видео.
Дэвид
1

Разница, я думаю, вы видите не в том, что инструменты не могут видеть использованную память, а в том, что это разные формы измерения. Я не могу объяснить это очень хорошо, но, к счастью, мне не нужно, Марк Руссинович из известности Sysinternals написал очень хорошую серию постов, касающихся производительности процессов в Windows. Части о физической памяти и виртуальной памяти должны объяснить, что вы видите.

Paxxi
источник
Нет, это не проблема. Меня больше волнует общая сумма, чем где она хранится (RAM или HD).
Soandos
0

Я думаю, что я решил это!

Я только что наткнулся на отзыв о RAMMap, и оказалось, что это µTorrent!

Не utorrent.exeсам по себе, но файлы, используемые совместно с µTorrent - по крайней мере, в моем случае: один из файлов занимал более 600 МБ, а другой - более 200 МБ и т. Д.

user184804
источник
-1

Некоторая память используется как кеш. Как только вам понадобится эта память, она автоматически освобождается. Так что не стоит беспокоиться.

Нил Мехта
источник
-1 Это не кеш, так как 1) подсчитывается раздельно, 2) легко учитывается.
Soandos