我有一个C/C++程序,可能会在内存不足时挂起.我们通过同时运行多个副本来发现这一点.我想在不破坏开发机器性能的情况下调试程序.有没有办法限制可用的内存,以便新的或malloc将返回一个NULL指针,比如说,请求500K的内存?
我想测试是否会只发生在特定的条件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文件写入一个非常小的分区.
我正在调试一个在低内存情况下失败的程序,并希望C++程序只消耗大量内存.任何指针都会有所帮助!