если это помогает, Resource Monitor описывает все остальное ОЗУ как "Резервный"
"Standby" RAM используется. Он используется в качестве кэша страниц (в нем хранятся страницы, недавно потерянные из всех рабочих наборов процессов; т. Е. Сбои страниц, которые можно устранить без перехода на диск), а также для упреждающего кэширования файлов с помощью SuperFetch.
Он считается "доступным", поскольку резервные страницы не нужно записывать на диск, чтобы их можно было использовать для другого использования. Например, когда процесс сталкивается с ошибкой страницы, которая требует чтения с диска, этому физическому процессу должны быть выделены новые физические страницы, и при необходимости их можно взять из списка ожидания. (Это не первый выбор для поиска страниц для этой цели, это будет бесплатный, а затем список нулевой страницы.)
Другими словами, ваша система работает так, как должна быть.
Вы можете заставить свою систему легко перевести ОЗУ в состояние "используется" с помощью инструмента командной строки testlimit
, одного из инструментов, используемых в экспериментах в Windows Internals. Он не является частью обычных инструментов sysinternals, но связан с ними; найти его здесь на сайте sysinternals. Загружаемый файл представляет собой ZIP-файл, содержащий две версии: testlimit.exe и testlimit64.exe. Оба они связаны с поддержкой больших адресов, поэтому 32-разрядная версия сможет выделять до 3 ГБ на 32-разрядной машине, загруженной с /3 ГБ, до 4 ГБ на 64-разрядной машине.
c:\> testlimit -?
дает помощь.
c:\> testlimit -d 4 -c 512
попытается выделить 2 ГиБ частного виртуального адресного пространства процесса в 512 распределениях по 4 МБ каждый. Это должно нормально работать на 64-битной машине. На 32-битной машине, не загруженной с /3GB (большинство нет), это может привести к ошибке немного раньше, потому что в процессе уже есть несколько MiB вещей (например, сама программа, все библиотеки DLL и т.д.), Поэтому для программы выделяется не совсем 2 ГиБ.
В обоих случаях будет иметь место уменьшение "доступной" ОЗУ и увеличение ОЗУ "при использовании", но не обязательно на 2 ГБ, поскольку нет гарантии, что ОС оставит все 2 ГБ в частном рабочем наборе процесса. Даже если это произойдет в краткосрочной перспективе, вы можете заметить, что рабочий набор процесса уменьшится позже, когда ОС решит: «Хм, вы на самом деле ничего с этим не делаете, другим процессам это нужно больше» и выводит его на экран.
Слишком сильно увеличьте размер "чанков" выделения, соответственно сократив количество чанков, и скорее всего он потерпит неудачу раньше, поскольку каждое выделение должно быть практически непрерывным. Например, попробуйте найти семь блоков по 512 МБ в адресном пространстве 4 ГиБ, и вы, скорее всего, потерпите неудачу.
Если вы используете опцию l(eak) вместо d(irty), программа выделит виртуальное пространство, но никогда не будет ссылаться на него. Это не приведет к заметному уменьшению "доступной" оперативной памяти.
(Параметр d(irty) берет свое имя от "бита грязной страницы" в записи таблицы страниц x86/x64, который устанавливается при обращении к соответствующей виртуальной странице с операндом в стиле "модификация"), то есть содержимое страницы имеет был изменен Это указывает Windows на то, что, если страница должна быть удалена из рабочего набора процесса, ее содержимое должно быть сохранено где-то перед тем, как страница может быть использована для чего-то другого. Страницы с установленным "грязным" битом сразу после выселения переходят в "измененный список страниц"; оттуда Windows записывает их в соответствующие хранилища.)
Вам нужно будет иметь достаточно "коммитов", чтобы эти тесты работали, как описано выше (даже для опции l (eak), даже если эта опция не использует сколько-нибудь заметного объема ОЗУ). В частности, ваш "предел фиксации" должен быть как минимум на 2 ГиБ (или сколько вы выделяете) выше, чем "заряд фиксации" перед началом теста. Обратите внимание, что это применимо, даже если вы используете опцию l (eak), а не просто d (irty). Если вы достигнете этого предела, вы увидите всплывающие окна "системе не хватает памяти" или аналогичные. Конечно, лекарство состоит в том, чтобы добавить больше оперативной памяти и / или увеличить параметры файла подкачки.