我想在我的测试中限制内存使用,所以我测试了Process::setrlimit
first 的行为,这让我很困惑。这是我的代码:
require 'securerandom'
Process.setrlimit(:AS, 2 << 20) # 2MB total memory, on Mac OS X
Process.setrlimit(:RSS, 2 << 20) # 2MB resident memory, on both Mac and Linux
s = SecureRandom.hex(5 << 20) # hexadecimal string from 5MB random data
puts s.length
我的 Linux 笔记本电脑中没有任何交换分区,所以我认为 RSS 等于总内存。
我希望这个程序会崩溃,但事实并非如此。它只是打印出10485760
该字符串的正确长度。为什么不崩溃?如何正确设置程序本身的内存限制?