Thread speicher freigeben (31 answers)
Opened by esskar at 2004-07-01 15:11

Gast Gast
 2004-07-02 18:41
#83809 #83809
[quote=ptk,02.07.2004, 16:16]Auf jeden Fall muss man auf zirkulaere Referenzen achten, da diese vom reference counting system nicht automatisch aufgeloest werden koennen. Wenn du weisst, dass du eine zirkulaere Referenz erzeugst, solltest du eine der beiden Referenzen mit Scalar::Util::weaken bearbeiten.

Ein Tool zum Aufspueren von Memory Leaks ist Devel::Peek (benoetigt in der Regel das Neuuebersetzen von Perl). Damit kann man nachzaehlen lassen, wie viele Skalare Perl zwischen verschiedenen Checkpoints verbraucht.

Ansonsten hat man die gleichen Probleme wie beim Verwenden von malloc() bei C: wenn man grosse Speicherbloecke alloziert, werden diese nach einem free() unter Umstaenden nicht an das Betriebssystem zurueckgegeben. In diesem Fall waere es besser, die speicherfressende Funktion in einen eigenen Prozess zu verlagern.[/quote]
Zirkuläre Referenzen lassen sich (auch ohne den Einsatz von zusätzlichen, speicherfressenden Modulen) per schlichtem Perl-Code aufbrechen - das also sollte nicht das Problem sein.

View full thread speicher freigeben