【发布时间】:2017-04-14 19:11:14
【问题描述】:
系统信息:Linux 版本 2.6.32-573.12.1.el6.x86_64 (mockbuild@x86-031.build.eng.bos.redhat.com) (gcc 版本 4.4.7 20120313 (Red Hat 4.4.7- 16) (GCC) ) #1 SMP Mon Nov 23 12:55:32 EST 2015
内存 48 GB
问题:我想 malloc() 100 GB 内存。但是在redhat系统上分配失败。
我发现 100GB 可以在 macOS 中分配 8 GB RAM(clang 编译)。我对此很困惑。
也许这个链接中描述了惰性分配? Why malloc() doesn't stop on OS X?
但是为什么linux系统不能呢?我尝试了ubuntu和redhat,都失败了。
结果: 经过调查,我发现以下两个步骤会让 malloc() 不受限制:
echo "1" > /proc/sys/vm/overcommit_memory
ulimit -v 无限制
【问题讨论】:
-
出于好奇,您到底为什么需要分配 100GB RAM?
-
@VolAnd 是的。类似的问题。但我找不到那个问题的答案。
-
@Lundin 你可以认为这是我的测试。实际上,另一个人在他的代码中写了这个。我也很好奇,想了解mac OS的原理可以做到这一点。