我阅读了文档Understanding Virtual Memory,它说在Linux VM中更改可调参数的一种方法是命令:
sysctl -w vm.max_map_count=65535
Run Code Online (Sandbox Code Playgroud)
我想知道数字65535的含义以及设置可以使用多少内存.
thk*_*ala 86
max_map_count:
此文件包含进程可能具有的最大内存映射区域数.内存映射区域用作调用malloc的副作用,直接通过mmap和mprotect,以及加载共享库时.
虽然大多数应用程序需要少于一千个映射,但某些程序(尤其是malloc调试器)可能会消耗大量的映射,例如每个分配最多一个或两个映射.
默认值为65536.
底线:此设置限制了离散映射内存区域的数量 - 它本身对这些区域的大小或进程可用的内存没有限制.
是的,这个:
sysctl -w vm.max_map_count=65535
Run Code Online (Sandbox Code Playgroud)
这是一个更好的写作方式:
echo 65535 > /proc/sys/vm/max_map_count
Run Code Online (Sandbox Code Playgroud)
田咖啡*_*田咖啡 11
echo 'vm.max_map_count=262144' >> /etc/sysctl.conf
sysctl -p
Run Code Online (Sandbox Code Playgroud)
小智 6
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为我们无法直接更改配置文件。运行以下命令。
echo vm.max_map_count=262144 | sudo tee -a /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)
但检查是否vm.max_map_count已经存在。你可以使用
grep vm.max_map_count /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)