如果已分配内存且已知(几乎肯定/可能)长时间不使用,则标记此内存可能很有用更积极地进入交换空间。
是否有一些命令告诉内核这个?
如果不这样做,可能最好将这些文件转储到临时文件中,但我对发送到交换(或类似的东西)的能力感到好奇。
当然,如果没有交换空间,这将无能为力,在这种情况下,写入临时文件可能会更好。
答案 0 :(得分:6)
您可以使用madvise
调用告诉内核将来您可能会对内存做些什么。例如:
madvise(base, length, MADV_SOFT_OFFLINE);
告诉内核你不会很快就需要内存,所以它可以刷新到后备存储(或者如果从文件映射并且没有改变就丢弃)。
还有MADV_DONTNEED
允许内核删除内容即使被修改(所以当你下次访问内存时,如果你这样做,它可能会被归零或从原始映射文件重新读取)。
答案 1 :(得分:0)
我能想到的最接近的事情是mmap
:Memory-mapped I/O。这不会写入linux swap partition
,但允许对磁盘进行分页(完整的内存页面)以进行访问。临时文件和目录也可用于tempfile
,mkstemp
和mkdtemp
,但同样,这不会写入交换分区,而是发生在普通文件系统上。
除了与上述类似的功能外,我不认为有任何东西允许直接访问交换分区(除了耗尽系统内存)。