Ограничение памяти с помощью 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 которая является правильной длиной этой строки. Почему он не падает? Как правильно установить лимит памяти в самой программе?

0 ответов

Другие вопросы по тегам