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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> задачка с очисткой переменной и форками 
:(
    Опции темы
DooZ
Дата 8.6.2007, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



титл сообщения изменить не могу

вообщем изменил вопрос
вот код:

Код

#!/usr/bin/perl -w

my %hash;

print "s0\n";
sleep(5);  #смотрим top в линуксах, памяти жрет 0.0%

open(F, "file.txt");   #файл этак метров на 20 например

    while (<F>)
    {
    $hash{$_}++;
    }

close(F);

print "s1\n";
sleep(5);   #смотрим top памяти хавает уже 0.9 - 1.1 зависит от файла
%hash=();   #очищаем ????
print "s2\n";
sleep;    #смотрим top а памяти жрется все теже 0.9 - 1.1% что за бред???




где затыка? что не так???

Это сообщение отредактировал(а) DooZ - 8.6.2007, 15:19
PM MAIL   Вверх
JAPH
Дата 8.6.2007, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Судя по `perldoc -f keys`, попробуйте
Код
undef %hash;



--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
DooZ
Дата 11.6.2007, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



яж написал что пробывал
уже разобрался
встроенная очистка перла не очищает хеш храня его на будущее, вдруг понадобится

вот что пишут:
Perl will save the old memory for reuse, and the new hash will use that left over memory. If you make the hash a global, and "clean it out", it will reuse the same mem over and over, and memory usage will rise to the "peak" level of the biggest hash. Perl (and almost any other program) will not release memory back to the OS.... it figures if you used it once, you may need it again, so it holds on to it. If you want to release the mem back to the OS, use C (which will allow you to deallocate the mem), or "fork and exec" the subroutine, and mem will be truly released at the end of the exec.

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


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

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


 




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


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

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