1

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

4

0 に答える 0