【发布时间】:2013-05-14 13:31:01
【问题描述】:
我要编写一个动态需要大量内存的应用程序。 大部分内存用于缓存目的,仅用于加速。 这些部分实际上可以按需释放。
不幸的是,如果内存不足,我的内核将终止该进程。但它可以 简单地释放内存。所以我想要的与linux页面缓存非常相似 解释here。是否有可能以方便的方式在用户空间中实现这种行为?
我正在考虑使用“缓存文件”实现这样的缓存,这些缓存文件存储在带有内存映射文件 IO 的 ramfs/tmpfs 上,但我敢肯定,有一种更舒适的方法。
提前致谢!
【问题讨论】:
-
malloc 失败了,你释放一些内存怎么样?如果您在分配新的堆栈帧时内存不足,那么您无能为力...
-
您可以使用您提到的文件方法也可以考虑位图文件。除此之外,您可以使用内存池选项,您可以一次分配内存并使用池中的内存并归还内存在不需要时进行池化。
-
@GradyPlayer:那我就不得不一直 malloc 来识别内存不足。除此之外,我的进程仍然可能被杀死。
-
你用的是什么内核?内存警告信号是几个内核的一个特性......
-
@GradyPlayer:好的,不知道这个功能。我去找找。
标签: c++ c memory-management