1

редактировать

Видео файлы, о которых я говорю, не были связаны с LoL (игрой). Это были отдельные файлы, которые я лично скачал. Из 8 ГБ, которые использовались тогда, игра потерпела крах, игра использовала менее 500 МБ. Chrome использовал 1 ГБ. Системные службы использовали менее 500 МБ, а все остальное, что у меня работало, было менее 1 ГБ. Мое среднее потребление памяти составляет около 2,5 ГБ - 3 ГБ для всех программ / игр.

редактировать

Используемые 6 ГБ были после того, как я закрыл игру и все другие приложения. Когда игра вылетала, использовались все 8 ГБ (не в режиме ожидания или бесплатно / недоступно для использования при необходимости), причем 5 ГБ кэшировались в виде видеофайлов MKV , которые не были в режиме ожидания / бесплатно. В игре произошел сбой при "нехватке памяти", потому что у меня отключена виртуальная память (файл подкачки) (проблема заключалась не в сбое игры, а в том, почему эти большие видеофайлы MKV сидели на всем пуле памяти игра вылетит).

TL; DR

Windows 8 кэшировала тонну больших MKV-файлов в качестве активной памяти (не в режиме ожидания). Эти MKV не были открыты ни в одной программе, и это было после нескольких перезапусков без открытия MKV. Использование RAM MAP для освобождения всех "рабочих наборов" очистило все MKV от кэша RAM и уменьшило использование моей оперативной памяти с 6 до 2 ГБ.

Как мне это предотвратить?

ВСТУПЛЕНИЕ

Я использую Windows 8 64bit с 8 ГБ оперативной памяти.

Я не использую много программ. Единственные "тяжелые" программы, которые я использую, - это Chrome, League of Legends и, возможно, Malwarebytes. Не очень много.

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

Поэтому я смотрю на диспетчер задач и, добавляя большую часть вещей в своей голове, получаю около 2 ГБ, используемых отчетами монитора ресурсов, которые используют 6 ГБ (без активных "тяжелых" программ). Действительно озадачен сейчас.

Получить более подробную информацию с программой Ram Map. Это говорит мне о том, что отображаемые файлы используют 4 ГБ, меня не беспокоит, если они все в режиме ожидания или готовы к выпуску в любое время. Но это не было ... все 4 ГБ были активны, а не в режиме ожидания.

Так что я покопался глубже и пошел к списку файлов, перечислил его по активной памяти и нашел виновника ...

4 ответа4

2

Как Chrome, так и игра не предназначены для запуска в системе без файла подкачки, в нем предполагается, что будет файл подкачки, и он использует гораздо больше памяти, чем "необходимый минимум" для запуска, чтобы повысить производительность.

Вы можете связаться с разработчиками League of Legends и Chrome и попросить их переписать свое программное обеспечение так, чтобы оно не зависело от файла (что может привести к ухудшению производительности программного обеспечения, так как ему нужно, чтобы оно тратило дополнительные циклы ЦП на память управление) или начать использовать файл подкачки.

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

1

«У меня отключен своп, потому что я точно знаю, что не использую достаточно программ, чтобы приблизиться к 8 ГБ»

Да ... ошибки "нехватки памяти", которые вы видите, говорят вам иначе.

Вы работаете под фундаментальным заблуждением.

Сообщение "недостаточно памяти" не имеет ничего общего с оперативной памятью и не поможет, даже если все эти сопоставленные файлы не были отображены, даже если вся ваша оперативная память была свободна.

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

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

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

Что касается того, почему вы раньше могли запускать игру без файла подкачки, вопрос не в том, «кто использует оперативную память», а «кто использует плату за коммит». Примечание: файлы, отображаемые в файловом кеше, не вносят вклад в фиксацию (поскольку сами файлы являются резервным хранилищем; если в них нет места в ОЗУ, их не нужно выгружать в файл подкачки). И, конечно же, список резервных страниц.

Суть в том, чтобы либо добавить оперативную память, либо включить файл подкачки.

Подробнее здесь: http://azius.com/blog/pagefile-yes1/ - вторая часть. Но первая часть помогает понять вторую часть.

1

Программы Windows не запускаются "не хватает памяти", потому что они не в оперативной памяти. У них недостаточно адресуемой памяти. На практике это происходит только с 32-битными процессами, поскольку в лучшем случае они могут адресовать только 4 ГБ (2 32), а часто - только 2 ГБ (2 31).

Кроме того, оперативная память, используемая для кэширования файлов, доступна программам, когда им это необходимо. В Windows по-прежнему оставалось 2 ГБ свободного места, поэтому, конечно, она не выбрасывала кэшированные файлы. С чего бы это? Вместо этого лучше использовать свободную память, когда программа запрашивает. (Но ваша программа, вероятно, не может запросить больше 2 ГБ)

Обратите внимание, что это исправляет ошибку в более ранних версиях Windows (вплоть до XP), которая ошибочно освобождала кэш-память, даже когда была доступна другая свободная память. Вы, кажется, хотите эту ошибку обратно.

0

Сплиттеры MKV, такие как LAV и Haali, отображают файл MKV в "резервную" память. MKV-сплиттер Divx Media Foundation по какой-то причине отображает файл MKV в "активную" память, занимая большой объем ОЗУ, не позволяя перераспределять его по мере необходимости.

Я полагаю, что сплиттер Divx Media Foundation MKV делает это неправильно, и сплиттеру нужно указать, чтобы он соответствовал резервной памяти, как и другие сплиттеры MKV.

У меня есть несколько скриншотов с RAMMAP, подробно описывающих, как сплиттер отображает память по-разному:

https://superuser.com/questions/778562/standby-memory-mapping-divx-media-foundation-splitter-mkv-playback-on-media

Если нет способа исправить это "активное" отображение, я, вероятно, прикушу пулю и обновлю до 16 ГБ ОЗУ.

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