[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