LINUX.ORG.RU
Ответ на: комментарий от KblCb

В перле делают подсчет ссылок. как только все ссылки исчезают то объект подчищается (память годна для повторного использования перлом)

Соответственно, если на составные части объекта не осталось ссылок, то так очистится и объект.

dilmah ★★★★★
()
Ответ на: комментарий от xTERM

То объекты будут висеть вечно.

anonymous
()
Ответ на: комментарий от xTERM

хех, захотел я потестировать, а у меня даже без кольцевых ссылок проблема.

Код:

my $hash = { };

while (1)
{
  map { $hash{rand()} = rand() } (1 .. 100000);
  undef $hash;
  $hash = { };
  warn "cycle\n";
}

Ни хрена не освобождается, память хавается без конца.

This is perl, v5.8.8 built for i686-linux-thread-multi

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

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

если Вы не гуру перла - всегда пишите use strict; :)

dilmah, у Вас две разных переменных, глобальная ссылка $hash и локальный %hash

ps: поменяйте $hash{rand()} на $hash->{rand()}

Eshkin_kot ★★
()
Ответ на: комментарий от Eshkin_kot

> если Вы не гуру перла - всегда пишите use strict;
добавлю только когда программируете.
для работы оно нах не нужно еще и память жрет.

anonymous2 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.