什么是迫使Perl 5在OS X上快速耗尽内存的好方法?

Cha*_*ens 9 memory macos perl

我想测试是否会只发生在特定的条件perl有一个malloc是失败,因为那里是没有的记忆里留下来.我想perl尽快死去.我认为禁食的方式是创建一些巨大的数组

perl -le '$_->[100_000_000_000] = 1 for \(@a, @b, @c, @d); <>'

但是在我的交换达到5演出之后我不得不杀掉它而没有停止的迹象(我在OS X 10.6上).

我刚刚在Linux上进行了测试,它很快就死了:

time perl -le '$_->[1_000_000_000] = 1 for \(@a, @b, @c, @d); <>'
Out of memory!

real    0m0.023s
user    0m0.012s
sys     0m0.008s
Run Code Online (Sandbox Code Playgroud)

所以问题似乎是OS X及其问题dynamic_pager.

我只是试图禁止dynamic_pager使用

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
Run Code Online (Sandbox Code Playgroud)

并重新启动,但机器完全挂起.我的下一次尝试是更改com.apple.dynamic_pager.plist配置文件以将vm文件写入一个非常小的分区.

bob*_*mcr 5

在上一个问题" 如何模拟内存分配错误 "中,建议用户自由空间ulimit与测试用户帐户一起使用以限制可以使用的内存量.这可以做你想要的,而不必分配大量的内存.