Próbuję przetestować konkretny warunek, który wystąpi, jeśli perl
ma malloc
, który nie działa z powodu braku pamięci. Chciałbym, aby perl
umarł tak szybko, jak to możliwe. Pomyślałem fasted sposób byłoby utworzyć kilka ogromnych tablic jakJaki jest dobry sposób na szybkie wymazanie pamięci Perla 5 w systemie OS X?
perl -le '$_->[100_000_000_000] = 1 for \(@a, @b, @c, @d); <>'
Ale miałem go zabić po moim wymiany hit 5 gig bez oznak zatrzymania (jestem na OS X 10.6).
Właśnie testowałem go na Linuksie i to dość szybko umiera:
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
więc problem wydaje się być OS X i jego dynamic_pager
.
Ja tylko starałem wyłączając dynamic_pager
z
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
i ponownym uruchomieniu, ale maszyna po prostu zawiesza się całkowicie. Następną moją próbą będzie zmiana pliku konfiguracyjnego com.apple.dynamic_pager.plist
w celu zapisania plików vm na bardzo małej partycji.
Dziwne, że nie "x" x 9e9'. – tsee
@tsee Potrzeba czasu, aby zbudować ciąg znaków, ale 'perl -e '@a [9e8] = 1'' jest faktycznie tylko' malloc'. –
"Musiałem go zabić po tym, jak moje zamiany trafiły 5 koncertów bez śladów zatrzymania (jestem na OS X 10.6)." - Mac OS X pokazuje często ten typ zachowania, w tym przypadki takie jak 'malloc (-1)'. Wypróbuj dowolny inny system operacyjny, w którym możesz jawnie wyłączyć zamianę. (Nigdy nie próbowałem tego robić na moim Macu - ale rób to od niechcenia na Linuksie). – Dummy00001