我阅读了文档Understanding Virtual Memory,并说它在Linux VM中更改可调参数的一种方法是命令:
sysctl -w vm.max_map_count=65535
我想知道数字65535的含义以及设置可以使用多少内存。
答案 0 :(得分:76)
来自the Linux kernel documentation:
max_map_count:
此文件包含进程的最大内存映射区域数 可能有。内存映射区域用作调用的副作用 malloc,直接由mmap和mprotect,以及加载共享时 库。
虽然大多数应用程序需要不到一千张地图,但确定 程序,特别是malloc调试器,可能会消耗很多, 例如,每个分配最多一个或两个地图。
默认值为65536。
底线:此设置限制了离散映射内存区域的数量 - 它本身对 size 没有限制区域或进程可用的内存。
是的,这个:
sysctl -w vm.max_map_count=65535
是一种更好的写作方式:
echo 65535 > /proc/sys/vm/max_map_count
答案 1 :(得分:8)
echo 'vm.max_map_count=262144' >> /etc/sysctl.conf
sysctl -p
答案 2 :(得分:0)
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
是否已经存在。您可以使用
cat /etc/sysctl.conf | grep vm.max_map_count