Ограничение памяти с помощью Process::setrlimit не работает
Я хочу ограничить использование памяти в моем тесте, поэтому я проверил поведение Process::setrlimit
во-первых, и это меня смущает. Вот мой код:
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
которая является правильной длиной этой строки. Почему он не падает? Как правильно установить лимит памяти в самой программе?