1

我想在我的测试中限制内存使用,所以我测试了Process::setrlimitfirst 的行为,这让我很困惑。这是我的代码:

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该字符串的正确长度。为什么不崩溃?如何正确设置程序本身的内存限制?

4

0 回答 0