动态内存分配/利用未使用的内存

我要写一个动态需要大量内存的应用程序。 大多数内存用于缓存目的,仅用于加速。 这些部分实际上可以按需释放。

不幸的是,如果内存耗尽,我的内核会终止进程。 但它可以简单地释放记忆。 所以我想要的是非常类似于linux页面缓存,因为它在这里解释。 是否有可能以方便的方式在用户空间中实现此类行为?

我正在考虑使用“缓存文件”来实现这样的缓存,这些缓存存储在带有内存映射文件IO的ramfs / tmpfs上,但我确信,有一种更舒适的方式。

提前致谢!

是的,这应该是可能的。 大多数内核都有一个内存分配方法,其中进程hibernate直到它获得所请求的内存。 (我使用的所有内核都有)。 如果你的,这可能是实施一个的好时机。 你可以在linux中查看kmem函数。 然而,这是做你所要求的被动方式。 这个过程将一直等到其他人释放内存。 如果您想在没有内存的情况下从您自己的进程地址空间释放内存,可以从用户空间轻松完成。 当分配失败时,您需要保留已分配内存的日志并释放您不需要的内存。