テストでメモリ使用量を制限したいので、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
その文字列の正しい長さを出力するだけです。なぜクラッシュしないのですか?プログラム自体でメモリ制限を正しく設定するにはどうすればよいですか?