Thread speicher freigeben
(31 answers)
Opened by esskar at 2004-07-01 15:11
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. |