Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Какая из конструкций вернет память для скрипта ? 
:(
    Опции темы
nIkTo
Дата 21.8.2010, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 5.7.2007

Репутация: нет
Всего: нет



какая из конструкций вернет память скрипту ?

Код

undef @array;
$#array = -1;
for ($i=0, $i<$#array,$i++) {
  $array[$i] = undef;
}
@array = ();


Интересует так же и для хэша.

И ещё подскажите как мониторить куда расходуется память. Похоже где-то текёт, а где не могу понять.
PM   Вверх
DurRandir
Дата 21.8.2010, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 335
Регистрация: 27.9.2009

Репутация: 14
Всего: 17



п.3 не эквивалентен остальным (догадайтесь, почему). п.1 - deprecated, см. perldoc. Из п.2 и п.4 я выбираю п.4.

По памяти. Перл не возвращает память обратно ОС. Т.е. если у вас в какой-то момент потребовалось 100мб - эти 100мб будут переиспользоваться потом, пока не потребуется больше (есть тонкости, конечно, но в общих чертах - это так), но отдать их ОС - нельзя. Поэтому признак утечки - если со временем у вас постоянный рост потребления памяти. Если на какую-то одну операцию её потребовалось много - это ещё не утечка.
PM   Вверх
Pfailed
Дата 21.8.2010, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



Цитата(DurRandir @  21.8.2010,  16:48 Найти цитируемый пост)
п.1 - deprecated, см. perldoc.

В каком разделе perldoc можно об этом почитать?


--------------------
PM MAIL   Вверх
Jimy
Дата 21.8.2010, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 4.7.2010

Репутация: нет
Всего: 3



Следующие две команды эквивалентны:
@array = ();
$#array = -1;

Усечение массива не освобождает занимаемую им память. Чтобы вернуть память в пул памяти процесса, нужно использовать
undef (@array)
Вернуть память в системный пул, вероятно, не удасться, поскольку немногие операционные системы поддерживают это.

Так что правильный ответ: только вариант №1.
PM   Вверх
DurRandir
Дата 21.8.2010, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 335
Регистрация: 27.9.2009

Репутация: 14
Всего: 17



Да, я тут скорее всего ошибся. Ответ от Jimy точнее - только п.2 и п.4 эквивалентны.
PM   Вверх
KSURi
Дата 23.8.2010, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27





--------------------
Died at Life.pl line 21
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0439 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.