[Moscow.pm] Interesting behavior of 'delete' function

Andrei andrei.protasovitski на gmail.com
Вс Дек 23 23:18:16 PST 2018


Memory leak происходит, когда garbage collector не справляется. Например,
из-за циклических ссылок. То, что происходит здесь, - задокументированная
фича языка. Довольно полезная фича, надо сказать. Редко используемая, но
полезная.

On Mon, Dec 24, 2018, 07:28 Alessandro Gorohovski via Moscow-pm <
moscow-pm на pm.org wrote:

> Здравствуйте уважаемое сообщество,
>
> Просто мне хотелось обратить внимание что,
> это одна из ситуаций, которая может приводит к "утечке" памяти (memory
> leak).
> Как то так.
>
> пн, 24 дек. 2018 г. в 06:38, Трунаев Иван via Moscow-pm <moscow-pm на pm.org
> >:
>
>> Ужас кошмарный. Почему в perl mail нет оператора karma? Coma. Ну если
>> можно сделать kill или delete, то должен быть и karma. Buddha.
>>
> чт, 29 нояб. 2018 г. в 15:16, Alessandro Gorohovski via Moscow-pm <
>> moscow-pm на pm.org>:
>>
>>> или здесь:
>>> https://www.youtube.com/watch?v=2wxL3DYen5g
>>>
>>>
>>> чт, 29 нояб. 2018 г. в 13:14, Alessandro Gorohovski <
>>> an.gorohovski на gmail.com>:
>>>
>>>> чт, 29 нояб. 2018 г. в 13:06, Andrei <andrei.protasovitski на gmail.com>:
>>>>
>>>>> Всё верно.
>>>>>
>>>>> По шагам:
>>>>>
>>>>> delete $a{11}{21,24}{31}
>>>>>
>>>>> 1. Сначала ищется элемент $a{11}. Он есть, и он ссылка на хэш.
>>>>> 2. Дальше в это подхэше ищется элемент $a{11}{21,24}. Список (21,24)
>>>>> преобразуется в строку "21$;24". Такого элемента не находится, поэтому
>>>>> из-за autovivification, включённого по умолчанию, этот элемент создаётся и
>>>>> его значение устанавливается в undef.
>>>>> 3. Далее ищется элемент $a{11}{21,24}{31}. Его нет, поэтому
>>>>> значением $a{11}{21,24} становится ссылка на хэш, в котором снова
>>>>> из-за autovivification создаётся элемент с ключом 31 и значением undef.
>>>>> 4. И только после этого delete удаляет только что созданные элемент и
>>>>> возвращает его значение undef.
>>>>>
>>>>> Элемент, созданный на шаге 2, никуда не девается, вот он там и сидит,
>>>>> память занимает, программистов пугает.
>>>>> :)
>>>>>
>>>>
>>>> Да, Андрей, это всё верно вы представили/объяснили
>>>> :)
>>>> Подобную ситуацию пожалуйста посмотрите тут:
>>>> https://www.youtube.com/watch?v=ZIig5fgp7nY
>>>>
>>>> --
>>> Moscow.pm mailing list
>>> moscow-pm на pm.org | http://moscow.pm.org
>>>
>>
>>
>> --
>> Иван Трунаев
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
>>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
----------- следующая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20181224/6bce077a/attachment-0001.html>


Подробная информация о списке рассылки Moscow-pm