[Vienna-pm] Vars in sub max {..}

Bernd Petrovitsch bernd at firmix.at
Fri Feb 3 05:14:22 PST 2006


On Fri, 2006-02-03 at 14:02 +0100, peter pilsl wrote:
[...]
> Man sieht, dass der Speicherplatz bei jedem Aufruf ein anderer ist, der
> sich aber auch mal wiederholen kann.
> 
> Die genaue Funktion der Speicherfreigabe ist nicht nur Aufgabe von perl
> und keinesfalls deterministisch.
> 
> Was fix ist:
> bei jedem Aufruf der sub wird $x neu erzeugt. An welchem Speicherplatz
> ist nach aussen zufällig.  Bei Ende der sub wird $x wieder freigegeben
> und damit im perl-internen sinn auch zerstört.

Wenn es keine Referenzen drauf gibt.

[...]
> Aber die Aufgabe ist extremst komplex und es gibt speicherstrukturen,
> die perl überfordern und es gibt immer wieder bugs in der
> garbage-collection von perl und dann gibt es natürlich prinzipielle
> probleme wie zirkuläre referenzen  $a->{x}-{y}=[1,2,\$a,4,5];  die von
> einem counter-basierten garbage-collector wie perl gar nicht aufgelöst
> werden *können*.

Dafür ist der GC simpel. Wenn man solche Strukturen aufbaut (und Angst
for Speicherleaks hat), dann kann man immer noch explizit Hashes und
Array löschen - stören wird das kaum können).

[...]
> Bisher komme ich selten umhin, mir eigene GarbageCollectoren für
> grössere Projekte zu basteln (kämpfe aber dennoch seit März mit einem
> unentdeckten mem-leak in einer mod_perl-application :)

Tja ....

	Bernd
-- 
Firmix Software GmbH                   http://www.firmix.at/
mobil: +43 664 4416156                 fax: +43 1 7890849-55
          Embedded Linux Development and Services



More information about the Vienna-pm mailing list