Я хотел бы уменьшить размер кэша, потому что у меня медленный диск и я использую систему без подкачки (в этом смысле это довольно быстро). У меня x86 Vista и 3 ГБ оперативной памяти. Проблема заключается в том, что Windows потребляет около 1 ГБ ОЗУ для дискового кэша (отображается в диспетчере задач в разделе «Физическая память -> Кэширование»), что оставляет только 2 ГБ для приложений. Очень раздражающее всплывающее окно появляется каждый раз, когда Windows думает, что памяти недостаточно, и, конечно, происходит сбой приложений при использовании памяти. Но в кэше все еще 1 ГБ!

Я пробовал AnalogX Cache Booster, но он ничего не делал, использование памяти остается тем же, всплывающие окна предупреждения находятся на том же уровне.

3 ответа3

6

У меня есть ... система подкачки

Я привык думать так же. С тех пор я узнал, что в MS Windows это плохая идея, которая может реально снизить производительность.

Windows воспринимает оперативную память больше как слой оптимизации поверх жесткого диска. Он не хочет ждать, пока вам не придется выгрузить оперативную память, прежде чем выполнять подкачку / переключение ее на диск. Вместо этого Windows хочет, чтобы все, что вы положили в ОЗУ, уже было выгружено / выгружено.

Таким образом, когда Windows нужна оперативная память для чего-то другого, она может просто использовать ее. Эта стратегия работает, потому что она помещает (медленную) запись на диск в моменты, когда ваш компьютер менее загружен, за счет немного более медленной загрузки приложения и, возможно, подкачки некоторых вещей, которые ему не нужны, а не в тот момент, когда ваш компьютер уже более напряженный и заканчивается ОЗУ.

Конечно, полностью удалив файл подкачки, вы можете подумать, что получаете лучшее из обоих миров. Однако в Windows есть масса кода, который оптимизирован с учетом только что описанной модели производительности. Вам действительно лучше убедиться, что у вас есть как минимум столько же места подкачки, сколько у вас есть RAM.

2

По умолчанию в Vista (и более поздних версиях) x86 будет разрешено только 2 ГБ виртуальной памяти для каждого процесса. Если одному приложению нужно больше, например, 3 ГБ, вы можете увеличить его на:

bcdedit /set IncreaseUserVa 3072

Однако это будет работать только для исполняемых файлов, которые были связаны с флагом "большой адрес осведомлен". Процессы под управлением других exe-файлов будут по-прежнему ограничены 2 ГБ.

Реальная оперативная память распределяется по мере необходимости как для приложений, так и для системы.

Поскольку это не является вашей проблемой, то для оптимизации использования памяти можно сначала отключить SuperFetch в Windows Vista :

Служба SuperFetch в Windows Vista предварительно загружает память вашей системы наиболее часто используемыми приложениями. Это делает запуск этих приложений намного быстрее, но это может быть нежелательным поведением для системных твикеров или геймеров.

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

Как описано в Руководстве по настройке памяти Windows Vista, параметры дискового кэша находятся в реестре:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management

Некоторые важные параметры:

DisablePagingExecutive контролирует, как неактивные драйверы режима ядра и системный код могут быть освобождены из ОЗУ и перенесены в файл подкачки . К сожалению, у вас нет файла подкачки, поэтому системный код никогда не будет заменен.

LargeSystemCache контролирует размер кэша файловой системы следующим образом:

  • 0 (по умолчанию) выделен кэш файловой системы стандартного размера (менее 10 МБ ОЗУ)
  • 1 позволяет использовать большой кэш файловой системы (до общего объема оперативной памяти минус 4 МБ!)

Если в вашем случае это значение равно нулю, то дисковый кеш уже настолько мал, насколько это возможно. Если вы получаете неудовлетворительную производительность, вы должны инвестировать в оборудование: либо больше оперативной памяти, либо более быстрый жесткий диск. Увеличение объема ОЗУ с 3 до 4 ГБ увеличит только (1 ГБ - видеопамять), если только вы не перейдете на 64-разрядную версию Windows.

0

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

Это всплывающее окно не имеет ничего общего с оперативной памятью и не имеет ничего общего с кэшем Windows. Это означает, что вы исчерпали предел коммитов. Это предел того, сколько частного виртуального адресного пространства могут выделить ваши процессы.

Существует три способа увеличить лимит коммитов: 1) запускать меньше или меньше вещей одновременно; 2) увеличение оперативной памяти; 3) увеличьте размер вашего файла подкачки. Это связано с тем, что предел фиксации - это просто размер оперативной памяти плюс текущий размер файла подкачки.

Если бы вы включили свой файл подкачки так, как хотели разработчики ОС, вы бы не увидели эти сообщения, и ваши программы не потерпели бы крах.

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

Примечание: большая часть "кэшированной" оперативной памяти, о которой сообщает диспетчер задач, по-прежнему "доступна"; кэш SuperFetch на самом деле не "использует" оперативную память. "Кеш" не является причиной вашей проблемы. Недостаток файла подкачки есть.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .