Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Valentin Nechayev                    2:5020/400     06 Jun 2005  22:39:44
 To : Andrey Sapozhnikov
 Subject : Re: garbage collector
 -------------------------------------------------------------------------------- 
 
 
 >>> Andrey Sapozhnikov wrote: 
 
 AS> Так вот, если опустить опусы про Lua и про то, где обратные
 AS> ссылки не ведутся - давайте поговорим о том, где они ведутся.
 AS> А ведутся они (внимание сюда, сейчас из шляпы появится кролик!) -
 AS> в Перле. Есть такая структура данных в языке Перл которая
 AS> называется weak reference, изнутри она видна как SV с
 AS> флажками SVf_ROK и SVprv_WEAKREF. Так вот она хранит список
 AS> всех, кто ссылается на объект. Hо поскольку я не знаком,
 AS> с технологией сбоки мусора, то будем считать, что данной
 AS> структуры не бывает. И Перла тоже, наверное...
 
 Hамеренно не используя другие источники... Вы в предыдущем письме писали:
 
 === cut ===
 
  AS> Да и SV (и его
  AS> наследники - AV, HV, GV,...) не хранят список ссылок на себя, а лишь
  AS> счетчик. Ссылка появляется - она увеличивает счетчик в переменной на
  AS> которую ссылается, ссылка дохнет - уменьшается счетчик. Как счетчик
  AS> доходит до нуля - объект становится кандидатом на зачистку.
 
 === end cut ===
 
 Из этого чётко и однозначно следует, что для типичного применения никаких
 обратных ссылок не ведётся. То, что в случае weak reference что-то ведётся -
 случай значительно более частный.
 
 >> Суммируя, чтобы такое работало кто-то должен написать полный
 >> сборщик мусора. В этом нет ничего невозможного, есть лишь текущая
 >> ненужность для типичных применений :)
 AS> А вот теперь поговорим о том, что же делать с внешними библиотеками.
 AS> Перл вовсю использует libc, не говоря уже разновсяческих
 AS> libssl, libzlib, libMagick, libjpeg и тысяче других. И все они
 AS> знать не знают ни о Перле и о замечательных технологиях сборки
 AS> мусора которые можно внедрить. И вот, эти глупые несчастные
 AS> библиотеки просят память у глупой libc через глупый вызов malloc,
 AS> и libc по глупости своей им кусочек памяти отдает. В конце. Потому
 AS> как в начале все занято нашим умным сборщиком мусора. И с тех пор
 AS> мы не вправе сдвинуть границу сегмента данных назад, потому
 AS> как глупые объекты глупых библиотек не догадываются о том, что
 AS> мы умеем перемещать всех и вся...
 
 И что с того? Сборкой мусора можно собрать перловые объекты, которых в
 типичной программе значительно больше, чем занятого другими библиотеками.
 И ничто не мешает кроме стандартного malloc (или даже своей замены
 стандартного malloc) использовать собственную арену, на которой и производить
 выделение памяти для своих данных. Слава богу, платформы без mmap() или
 её полного аналога сейчас вымерли.
 -netch-
 --- ifmail v.2.15dev5.3
  * Origin: Dark side of coredump (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 garbage collector   Kostya Lesnichenko   31 May 2005 03:26:17 
 Re: garbage collector   Andrey Sapozhnikov   31 May 2005 04:34:59 
 garbage collector   Bulat Ziganshin   31 May 2005 15:24:17 
 Re: garbage collector   Andrey Sapozhnikov   02 Jun 2005 05:37:01 
 Re: garbage collector   Valentin Nechayev   02 Jun 2005 11:03:24 
 Re: garbage collector   Andrey Sapozhnikov   06 Jun 2005 19:40:36 
 Re: garbage collector   Valentin Nechayev   06 Jun 2005 22:39:44 
Архивное /ru.perl/22383cb6b248b.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional