【发布时间】:2011-03-21 14:52:04
【问题描述】:
在 Mac OS X 上,vm_allocate() 允许创建可清除内存区域。当检测到内存压力时,内核可以随时回收这个区域(除了它被锁定的时候)。它对于缓存数据等很有用。
我想知道 Linux(内核 2.6)上是否存在类似的机制。谷歌搜索让我找到了一些关于 Android 的信息,讨论了可能被清除的共享内存的分配,但我还没有看到任何关于在 vanilla Linux 上实际执行此操作的 API 的讨论。对mmap、shmat 等的手册页的回顾显示没有设置可清除区域的标志。这个功能在 Linux 上可用吗?
有关此功能在 Android 上的说明如下:
谢谢!
【问题讨论】:
-
来自XNU fxr.watson.org/fxr/source/osfmk/vm/…的一段代码
-
感谢@osgx 的格式修复。 XNU 代码确实是我在 OS X 下看到的。
-
你能添加一些关于android讨论的链接吗?
标签: linux caching linux-kernel memory-management