Я пытаюсь протестировать определенное условие, которое произойдет, только если perl
имеет malloc
, который завершается неудачей из-за отсутствия памяти.Я бы хотел, чтобы perl
умер как можно быстрее.Я подумал, что быстрый способ будет создать несколько огромных массивов, таких как
perl -le '$_->[100_000_000_000] = 1 for \(@a, @b, @c, @d); <>'
Но мне пришлось убить его после того, как мой своп ударил 5 гигабайт без признаков остановки (я на OS X10.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
Так что проблема, похоже, в OS X и dynamic_pager
.
Я только что попытался отключить dynamic_pager
с помощью
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
и перезагрузиться, но машина просто зависает полностью.Моя следующая попытка будет изменить конфигурационный файл com.apple.dynamic_pager.plist
, чтобы записать файлы vm в очень маленький раздел.