70

我阅读了了解虚拟内存的文档,它说在 Linux VM 中更改可调参数的一种方法是命令:

sysctl -w vm.max_map_count=65535

我想知道数字 65535 的含义以及该设置可以使用多少内存。

4

3 回答 3

108

Linux 内核文档

最大地图计数:

此文件包含进程可能拥有的最大内存映射区域数。内存映射区域用作调用 malloc 的副作用,直接由 mmap 和 mprotect 使用,也用于加载共享库时。

虽然大多数应用程序需要少于一千个映射,但某些程序,特别是 malloc 调试器,可能会消耗大量映射,例如,每次分配最多一到两个映射。

默认值为 65536。

底线:此设置限制了离散映射内存区域的数量- 就其本身而言,它对这些区域的大小或进程可用的内存没有限制。

是的,这个:

sysctl -w vm.max_map_count=65535

只是写这个更好的方式:

echo 65535 > /proc/sys/vm/max_map_count
于 2012-07-27T09:37:21.750 回答
17
echo 'vm.max_map_count=262144' >> /etc/sysctl.conf

sysctl -p
于 2017-11-11T12:10:52.873 回答
6
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p

这不起作用,因为我们无法直接更改配置文件。运行以下命令。

echo vm.max_map_count=262144 | sudo tee -a /etc/sysctl.conf

但是检查是否vm.max_map_count已经存在。您可以使用

grep vm.max_map_count /etc/sysctl.conf
于 2019-12-02T09:29:30.607 回答