Zitat:
Zitat von hgseib |
Diese Ringreferenzierung sollte doch dank Mark & Sweep welches ab FP 10 (oder wars sogar 9?) umgesetzt wurde gelöst sein?
Zitat:
Zitat von laxersaz Da lohnt sich auf jeden Fall ein Profiling der Anwendung, z.B. mit dem Flex Profiler - der sagt dann exakt, wieviele Instanzen von welcher Klasse noch im Speicher sind und wieviele Ressourcen die verbrauchen. |
Genau sowas habe ich gesucht! Vielen Dank - optimal. Habe den Fehler dank dieser Anwendung auch gefunden
Zitat:
Zitat von b.asile Nein das geht,
jedoch nur im Debug Player.
Da ruft man auch nur die GarbageCollection auf,
infos zu objekten bekommt man da auch nicht.
Es gibt (gab?) auch einen "Hack" fuer den normalen flashplayer,
wenn man zweimal ne localconnection mit dem selben bezeichner aufgebaut hatte. PHP-Code: private function gcHack():void { // unsupported hack that seems to force a full GC try { var lc1:LocalConnection = new LocalConnection(); var lc2:LocalConnection = new LocalConnection(); lc1.connect('name'); lc2.connect('name'); } catch (e:Error) { } }
|
Zitat:
Zitat von hgseib eben deshalb ;-)
man kann so prüfen, ob er komplett aufräumen würde, wenn er aufräumt.
im normalen betrieb weiss man ja nie wann er das tut, und ob ein zuwachs von restbeständen her rührt, oder daher, weil regulär weitere objekte dazu gekommen sind.
aber wenn man fehlerhaft programmiert hat, dann nützt das garnichts.
das problem ist ja nicht, das kein GC kommt, sondern das nicht alle notwendigen referenzen gelöscht wurden.
und wo diese fehler stecken .. da muss man leider selbst drauf kommen. |
Du wiederholst dich

Ist schon klar, dass man den fehlerhaften Code selbst finden muss aber eben eine solche Anwendung wie der Flex Profiler zeigt einem was denn so im Speicher ist und etwaige Häufungen deuten dann schon auf die verschiedenen Fehlermöglichkeiten hin.
In meinem speziellen Fall war es so, dass ich kürzlich eine Aktualisierungsfunktion für eine Vielzahl verschiedener Anzeigeobjekte geschrieben habe die nich sauber war. Anstatt die alten Anzeigen zu löschen oder zu ändern habe ich einfach neue erstellt und drüber gelegt

Das hat dazu geführt, dass ich nach wenigen Minuten bereits über 1000 TextField Objekte im Speicher hatte die nicht gelöscht wurden da sie ja noch grafisch vorhanden (nur für den Nutzer nicht sichtbar) waren.
Danke jedenfalls für eure Hilfestellungen!