gpt4 book ai didi

c - 疯狂: not understood

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:19:54 28 4
gpt4 key购买 nike

背景:

我在一台旧笔记本电脑上运行。我总共只有 512Mo 可用 128Mo ram。没钱买更多的 ram。

我使用 mmap 来帮助我规避这个问题,而且效果很好。C代码。Debian 64 位。

问题:

除了我所有的努力,我很快就用完了内存,我想知道我是否可以释放我读取的 mmaped 区域以释放我的 ram。

我读到 madvise 可以提供帮助,尤其是选项 MADV_SEQUENTIAL

但我不是很了解全貌。

需求:

为了能够在区域被读取后释放 mmaped 分配的内存,这样它就不会用大文件填满我的整个 ram。我不会很快阅读它,所以它对我来说是垃圾。将它保存在 ram 中是没有意义的。

更新:我还没有处理完文件,所以不想调用 munmap。我还有其他事情要做,但在它的另一个区域。随机读取。

最佳答案

对于 mmap()ed 文件的随机读/写访问,MADV_SEQUENTIAL 可能不是很有用(实际上可能会导致不良行为)。 MADV_RANDOMMADV_DONTNEED 在这种情况下会是更好的选择。但是,请注意内核可以自由地忽略任何 madvise() - 尽管据我了解,Linux 目前不会,因为它倾向于将 madvise() 视为更多命令而不是建议...

另一种选择是 mmap() 仅根据需要选择文件的部分,并在完成后 munmap() 它们,也许维护一个一些当前事件映射的池(即,如果需要,一次映射多个区域,但仍保持有限)。

关于c - 疯狂: not understood,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23677988/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com