gpt4 book ai didi

linux - 通过 mmap() 加载文件时的内存使用情况

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:12:58 25 4
gpt4 key购买 nike

想知道可用于通过 mmap() 映射文件的最大内存量与 Linux 机器中的 RAM 大小之间是否存在关系。我尝试对一些文件进行内存映射,但我发现当“映射”使用量接近“MemTotal”(通过 cat/proc/meminfo 查看)时,我无法再映射任何文件。

From /proc/meminfo on the 64 bit linux box :

MemTotal: 32909628 kB

MemFree: 221744 kB

Buffers: 1800 kB

Mapped: 31642928 kB

CommitLimit: 38012616 kB

Committed_AS: 42641120 kB

VmallocTotal: 536870911 kB

VmallocUsed: 299920 kB

VmallocChunk: 536568999 kB

那么,我假设“映射”使用量永远不会超过“MemTotal”是否正确?我感到困惑的是,当我们映射文件时,我认为内存始终是虚拟的。

谢谢!

最佳答案

不,除非您将自己 memlock() 到内存中,否则您很可能会遇到操作系统映射的地址空间限制。它恰好达到 32GB,与您的 RAM 相同,这很可能是巧合。

编辑:实际上,如果您使用的是 MAP_PRIVATE,那么您可能确实达到了内存限制(MAP_PRIVATE 被视为私有(private)分配,因此需要物理 RAM 或交换来覆盖除非启用了激进的过度使用)。如果您还没有尝试使用 MAP_SHARED。

关于linux - 通过 mmap() 加载文件时的内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1239121/

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