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