我正在使用内存映射文件来缓存ASP.NET应用程序的大量数据。目前我正在使用global.asax事件打开文件并获取一个内存映射文件句柄,我将其缓存在应用程序对象中。如果我取消引用指针的句柄并尝试将指针缓存在我的httphandler中,那么当我引用指针时,我会得到一个保护异常,因此我将缓存内存映射文件的句柄并将其解除引用到我的httphandler中的指针。这似乎工作正常,而且非常快,所以我假设它只是将文件加载到实际内存中一次。问题是,当负载增加时,我会同时运行多个httphandler实例,并且每个实例似乎将句柄取消引用到不同的地址。这导致地址空间很快耗尽。没有达到64位,有没有办法强制托管代码在线程之间共享一个共同的内存块?有没有更好的方法来完成我在这里尝试做的事情?
提前致谢,
布赖恩
答案 0 :(得分:0)
我猜你可以从单例中提供指向内存映射文件的指针,对吗?