| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Какая из конструкций вернет память для скрипта ? |
| Автор: nIkTo 21.8.2010, 16:42 | ||
какая из конструкций вернет память скрипту ?
Интересует так же и для хэша. И ещё подскажите как мониторить куда расходуется память. Похоже где-то текёт, а где не могу понять. |
| Автор: DurRandir 21.8.2010, 16:48 |
| п.3 не эквивалентен остальным (догадайтесь, почему). п.1 - deprecated, см. perldoc. Из п.2 и п.4 я выбираю п.4. По памяти. Перл не возвращает память обратно ОС. Т.е. если у вас в какой-то момент потребовалось 100мб - эти 100мб будут переиспользоваться потом, пока не потребуется больше (есть тонкости, конечно, но в общих чертах - это так), но отдать их ОС - нельзя. Поэтому признак утечки - если со временем у вас постоянный рост потребления памяти. Если на какую-то одну операцию её потребовалось много - это ещё не утечка. |
| Автор: Pfailed 21.8.2010, 18:06 |
В каком разделе perldoc можно об этом почитать? |
| Автор: Jimy 21.8.2010, 19:01 |
| Следующие две команды эквивалентны: @array = (); $#array = -1; Усечение массива не освобождает занимаемую им память. Чтобы вернуть память в пул памяти процесса, нужно использовать undef (@array) Вернуть память в системный пул, вероятно, не удасться, поскольку немногие операционные системы поддерживают это. Так что правильный ответ: только вариант №1. |
| Автор: DurRandir 21.8.2010, 20:25 |
| Да, я тут скорее всего ошибся. Ответ от Jimy точнее - только п.2 и п.4 эквивалентны. |
| Автор: KSURi 23.8.2010, 13:20 |
| http://www.slideshare.net/andy.sh/theres-more-than-one-way-to-empty-it ;) |