Size: a a a

2021 January 24

OP

Oleg Pronin in Modern::Perl
Аллокатор неважно какой ты выберешь
источник

OP

Oleg Pronin in Modern::Perl
Вот слздай массив на лям и очисти
источник

OP

Oleg Pronin in Modern::Perl
И не освободится
источник

OP

Oleg Pronin in Modern::Perl
Независимо от аллокатора в общем случае
источник

OP

Oleg Pronin in Modern::Perl
Патч на арену чтобы отдавала в систему нереален. Иначе это не арена будет
источник

OP

Oleg Pronin in Modern::Perl
Fixed-size memory pool стандартный не отдаст назад. Нужна косвенная адресация а это потеря скорости на рантайме при любом обращении к переменным
источник

ВР

Василий Степанович Р... in Modern::Perl
Vadim Goncharov
ну как это чушь, вот я запускаю на фре

perl -E '$a="a"x1048576; $b.=$a,sleep 0.1 for 1..4096; say -big; sleep 20; undef $b; say -freed; sleep 20'

и вижу в top

  PID USERNAME      THR PRI NICE   SIZE    RES STATE   C   TIME    WCPU COMMAND
6764 nobody          1  52    0  5136M  4112M nanslp  1   0:02  25.65% perl -E $a="a"x1048576; $b.=$a,sleep 0.1

и потом на выводе -freed падает до

 PID USERNAME      THR PRI NICE   SIZE    RES STATE   C   TIME    WCPU COMMAND
6764 nobody          1  24    0 16560K  7856K nanslp  2   0:02   0.00% perl -E $a="a"x1048576; $b.=$a
А как это в sleep передано не целое число? 🤔

А как это после say идут слова, которые не переменные и не константы, но к ним в начало приставлен минус: -big, - freed 🤔
источник

VG

Vadim Goncharov in Modern::Perl
Oleg Pronin
Вот слздай массив на лям и очисти
perl -E '$a="a"x1048576; @b=(); push(@b,"$a"),sleep 0.1 for 1..2046; say -big; sleep 20; undef @b; say -freed; sleep 20

отдает
источник

VG

Vadim Goncharov in Modern::Perl
perl -E '$a="a"x1024; @b=(); say -start; sleep 9; push(@b,"$a"),sleep 0.1 for 1..1048576; say -big; sleep 20; $b[$_]=undef for 1..1048576; say -freed; sleep 20'

хоба, вот так вообще ничего не отдал
источник

W

Warstone in Modern::Perl
Вадим, перестань в тестах использовать строки. Считай что это табу. Тогда будешь получать то, о чем мы говорим.
источник

VG

Vadim Goncharov in Modern::Perl
Warstone
Вадим, перестань в тестах использовать строки. Считай что это табу. Тогда будешь получать то, о чем мы говорим.
гы, а что я должен использовать? https://t.me/modernperl/179136
источник

W

Warstone in Modern::Perl
Тестовый однострочник я тебе не дам. Думай сам.
источник

W

Warstone in Modern::Perl
Что? Кучу интов в массиве, многоуровневые массивы и т.д.
источник

VG

Vadim Goncharov in Modern::Perl
Warstone
Тестовый однострочник я тебе не дам. Думай сам.
так ты утверждал, ты и доказывай
источник

W

Warstone in Modern::Perl
Так я и утверждаю. Доказывать что-либо? Тебе? Ты-же знаешь софт-скиллз у меня не хватает.
источник

VG

Vadim Goncharov in Modern::Perl
Warstone
Освобождение памяти идет автоматически при потери последней ссылки на данные. Это поисходит или когда вы делаете undef $scalar_value_or_rereference или по достижению конца скоупа. Но память по умолчанию отдается во внутренний пулл Перла, а не системе.
ты сделал утверждение, я продемонстрировал обратное, где память системе отдалась
источник

VG

Vadim Goncharov in Modern::Perl
человек, в общем-то, тоже спрашивал про это
источник

W

Warstone in Modern::Perl
Я тебе объяснил - почему. Олег тебе объяснил - почему.
источник

VG

Vadim Goncharov in Modern::Perl
я показал, что это объяснение, как минимум, не учитывает некоторых вещей
источник

W

Warstone in Modern::Perl
Я тебе объяснил - почему твой тест векорректен
источник