1

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

不幸的是,如果内存不足,我的内核将终止该进程。但它可以简单地释放内存。所以我想要的与这里解释的 linux 页面缓存非常相似。是否有可能以方便的方式在用户空间中实现这种行为?

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

提前致谢!

4

1 回答 1

0

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

于 2013-05-20T03:55:49.340 回答