Speicherverbrauch / Garbage Collection

Begonnen von Loredo, 17 Oktober 2013, 09:39:34

Vorheriges Thema - Nächstes Thema

Loredo

Hi,


wie handhabt FHEM (bzw. auch Perl generell, ich bin da kein Experte) die Garbage Collection für den Arbeitsspeicher?


Hintergrund:
Mein ONKYO_AVR Modul führt wohl bei einigen Usern über verschiedene Zeiträume zu einem kompletten Absturz von FHEM. Leider steht überhaupt nix im Log. Die User verwenden (leider) extensiv Funktionen mit DLNA und der Receiver schickt all seine Infos einfach ungefragt in den Antworten auf die Fragen mit, die ich ihm schicke. Diese Antworten laufen bei mir alle erstmal in einen Hash und erst wenn die Antwort da ist, die ich erwarte, beende ich die Verbindung. Eigentlich wird der Hash im Programmcode jedes Mal neu erzeugt bzw. überschrieben. Aber kann es sein, dass der Speicherbereich tatsächlich gar nicht freigegeben wird und die ganzen Daten sich einfach nur addieren und am Ende irgendwo ein Pufferüberlauf stattfindet?


Siehe auch
http://forum.fhem.de/index.php/topic,15024.msg100488.html#msg100488




Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

rudolfkoenig

Perl macht kein Garbage-Collection, sondern fuehrt Buch (referenz-counter). Nachteil: spezielle Datenstrukturen (mir ist z.Zt. nur XML-DOM bekannt), die mehrere Zeiger auf das gleiche Objekt fuehren (child, parent, prev, next, etc) muessen explizit vom Programmierer freigegeben werden. Normale Datenstrukturen wie hash und array werden automatisch weggeraeumt.

Das Problem sollte FHEM-Anwender nicht betreffen, Modul-Autoren dagegen schon, falls sie z.Bsp. XML-Daten eingelesen haben.