Что является хорошим способом заставить Perl 5 быстро исчерпать память в OS X?

Я пытаюсь проверить определенное состояние, которое произойдет, только если perl имеет malloc , который завершается неудачей из-за отсутствия памяти. Я бы хотел, чтобы perl умер как можно быстрее. Я подумал, что быстрым способом будет создать несколько огромных массивов, таких как

perl -le '$ _-> [100_000_000_000] = 1 для \ (@ 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

Таким образом, проблема, похоже, заключается в OS X и ее dynamic_pager .

Я только что попытался отключить dynamic_pager с помощью

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

и перезагрузить компьютер, но машина просто зависает полностью. Моя следующая попытка - изменить файл конфигурации com.apple.dynamic_pager.plist , чтобы записать файлы vm в очень маленький раздел.

9
задан Chas. Owens 4 September 2010 в 14:59
поделиться