Отображенные в память файлы в приложении .NET - PullRequest
0 голосов
/ 07 апреля 2009

Я использую файл отображения памяти для кэширования большого объема данных для приложения ASP.NET. В настоящее время я использую событие global.asax, чтобы открыть файл и получить дескриптор файла отображения памяти, который я кеширую в объекте приложения. Если я разыменую этот дескриптор на указатель и попытаюсь кэшировать указатель в моем httphandler, я получу исключение защиты, когда ссылаюсь на указатель, поэтому я кэширую дескриптор в файл сопоставления памяти и разыменую его на указатель внутри моего httphandler. Кажется, это работает нормально и довольно быстро, поэтому я предполагаю, что загрузка файла в реальную память происходит только один раз. Проблема в том, что когда нагрузка увеличивается, я запускаю несколько экземпляров httphandler одновременно, и каждый из них, кажется, разыменовывает дескриптор на свой адрес. Это приводит к довольно быстрому исчерпанию адресного пространства. Если не считать перехода на 64-битную версию, есть ли способ заставить управляемый код разделять общий кусок памяти между потоками? Есть ли лучший способ сделать то, что я пытаюсь сделать здесь?

Заранее спасибо,

Brian

1 Ответ

0 голосов
/ 07 апреля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...