2013-06-20 2 views
1

Я тренирую несколько сетей на основе единой базы данных.boost shared_memory_object хранит содержимое на диске?

Чтобы ускорить скорость и уменьшить чтение диска, я использую класс shared_memory_object, обеспечиваемый boost. Поскольку рабочая станция лаборатории недоступна, я перенес свой код на свой персональный компьютер.

На рабочей станции лаборатории хост-программа успешно считывает все данные в память. Но на моем ПК, как ни странно, он создает файл на системном диске, а не хранит данные в памяти. Вся база данных составляет около 3,7 ГБ; рабочая станция лаборатории имеет 32 ГБ памяти и работает под управлением Windows Server 2008 R2; мой компьютер имеет 8 ГБ памяти и работает под управлением Windows 7.

Должно быть достаточно памяти для хранения данных. Так почему? Существуют ли определенные способы заставить программу хранить все данные в памяти?

+0

Ответов пока нет? –

ответ

0

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

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

+0

Но почему это происходит по-разному между Win 7 и Server 08? На сервере 08 нет такого физического файла. –

+0

Я на самом деле не использовал 'shared_memory_object' на Win32, поэтому я не могу подтвердить разницу в поведении ... Однако, если вы не указали абсолютный путь в имени файла, предоставленном для shared_memory_object, тогда возможно создание файла на сервере 08, но он просто находится в неожиданном каталоге. Вы также можете использовать SysInternals Process Explorer, чтобы узнать, может ли он иметь какой-либо неожиданный файл с открытым файлом. – bovine

Смежные вопросы