环境:Windows 8 64位,Windows 2008 server 64位 Visual Studio(专业版)2012 64位
清单 L;//我的程序中有 1000 个大的 CMyObject 进行缓存,由我的 Windows 服务程序中的不同线程共享。
对于我们的 SaaS 中间件产品,我们在内存中缓存了 1000 个大型 C++ 对象(只读 const 对象,每个对象大小约为 4MB),这会导致系统内存不足。我们可以将磁盘文件(或其他由操作系统管理的持久性机制)关联到我们的 C++ 对象吗?不需要共享/进程间通信。
如果磁盘文件在整个过程(我们的 Windows 服务程序)期间工作,它就足够了。只读 const C++ 对象由同一 Windows 服务中的不同线程共享。
我什至考虑使用对象数据库(如 mongoDB)来存储对象,然后在每次使用时加载/卸载这些对象。虽然比读取我们的序列化文件更快(希望如此),但它仍然会破坏性能。
目的是出于性能原因保留 C++ 对象的缓存,并避免每次都必须加载/卸载序列化的 C++ 对象。如果这个磁盘文件是操作系统管理的并且需要对我们的代码进行最少的调整,那就太好了。
提前感谢您的回复。