В приложении, которое я пишу, я использую много контейнеров в памяти (контейнеры std C++, но я не думаю, что это релевантно).Эффект кратковременного использования памяти виртуальной памяти (Windows)
Во время одной «задачи» моего приложения, в случае крайнего использования с интенсивным использованием, использование памяти в частных байтах достигает 1 ГБ.
Как раз немного контекста, эта задача представляет собой задачу, инициированную пользователем, включающую файлы 100 000s. Вероятно, пользователь отключит это, а затем покинет машину.
(И нет, я не делаю ничего глупого, как загружать файлы в память - это след - все метаданные, связанные с текущей задачей).
Для большинства пользователей использование памяти во время этой задачи является небрежным - это всего лишь 1% пользователей, которые хотят делать 500 000 «вещей» с 5000 «вещами».
Я собирался приступить к процессу, чтобы каким-то образом переместить много этого в памяти на диск, например. файл с царапинами, встроенная БД.
Но потом я подумал: «Встряхните минутку. Все эти решения по сути кэшируют память на диск. Разве это не то, что для виртуальной памяти?».
Я не заинтересован в сохранении этих данных - это чисто царапины/временные материалы, к которым мне нужен доступ во время выполнения задачи.
Так что мой вопрос: что мне делать?
Я не хочу делать главный рефакторинг для этого 1%, но я хочу знать, как работает приложение с такой высокой памятью.
Я прав, говоря, что я, вероятно, не смог бы намного лучше, чем диспетчер виртуальной машины Windows?
При каких условиях это становится вредным? Хорошо, так что да, если бы я использовал всю реальную память, тогда она бы перебивала, чтобы перезагрузить страницы. Но разве у меня этого не было бы в случае, если, например, встроенная база данных?
Приветствия,
Джон