我要编写一个动态需要大量内存的应用程序。 大多数内存用于缓存目的,仅用于加速。 这些部分实际上可以按需释放。
不幸的是,如果内存耗尽,我的内核会终止进程。但它可以 简单地释放记忆。所以我想要的是非常类似于linux页面缓存 解释here。是否有可能以方便的方式在用户空间中实现此类行为?
我正在考虑使用“缓存文件”来实现这样的缓存,这些缓存文件存储在带有内存映射文件IO的ramfs / tmpfs上,但我确信,有一种更舒适的方式。
提前致谢!
答案 0 :(得分:0)
是的,这应该是可能的。大多数内核都有一个内存分配方法,其中进程休眠直到它获得所请求的内存。 (我使用的所有内核都有)。如果你的,这可能是实施一个的好时机。你可以在linux中查看kmem函数。 然而,这是做你所问的事情的被动方式。这个过程将一直等到其他人释放内存。 如果您想在没有内存时从您自己的进程地址空间释放内存,可以从用户空间轻松完成。当分配失败时,您需要保留已分配内存的日志并释放您不需要的内存。