Ich will nicht vermessen erscheinen, aber hast Du denn tatsächlich Ahnung vom Garbage-Collector? Das soll wirklich kein dummer Spruch oder so sein, ich wäre für genauere Infos nämlich sehr dankbar. Ich habe mich schon etwas in das Thema GC unter Perl eingelesen und habe auch vom Thema Compilerbau ein wenig Ahnung.
Ich verstehe
http://perldoc.perl.org/perlobj.html#Two-Phased-Garbage-Collection so, dass während der Programmlaufzeit in der Tat ein Referenzzähler verwendet wird, um zu entfernende Objekte auszumachen. Zu Programmende hin, wird dann aber sehr wohl M-a-S eingesetzt, um die übrig gebliebenen Objekte einzusammeln und zu zerstören.
Mit Referencecounting wäre es auch überhaupt nicht möglich, den gesamten Speicherplatz wieder frei zu machen, sonst würde sich niemand die Mühe machen, nen anderen GC zu implementieren, denn das RC ist ne schön schnelle Sache. Verklemmungen/Zyklen kannst Du damit aber leider nicht finden.
Ich kann nicht beschwören, dass M-a-S eingesetzt wird, aber irgendwas muss am Schluss noch passieren. Wieso sollte perlobj auch lügen?
Ich habe z.B. hier zwar gelesen, dass es Gerüchte um einen M-a-S in Perl geben soll, aber das bezieht sich wohl auf den Collector zu Laufzeit:
http://perl.active-venture.com/pod/perltodo-somepo...
Ja, es gibt Destroyblöcke, die werden auch durchlaufen. Es ist aber ein Zyklus eingebaut und der wird erst in der "global destruction" beseitigt. Wenn ich eine debug-Ausgabe in diesem Block machen lasse, dann wird die auch ausgegeben, wenn ich das Programm normal laufen lasse, aber eben nicht im Debugger. Daher meine Frage.