Hilfe es frisst meinen RAM!

Scarabol

Mitglied
Hi Leute,

der Titel sagts schon mein "Spiel" reserviert immer mehr RAM und passend dazu gehen meine FPS von 450! in den Keller auf 22 in nichtmal 30min.

Ich vermute mal, dass ich irgendwo überflüssige Objekte habe, aber die sollte ja der Garbagecollector erwischen. Nur wieso gehen meine FPS runter?

Echte "Objekte" beispielsweise Gegner sehe ich nur in der gewünschten Anzahl.

Kann ich irgendwie genauer ins Programm schauen? Benutze im Moment Eclipse als IDE

Danke im Voraus
Scarabol
 
ich würde mal auf noch offene referenzen tippen ...
vielleicht auch sowas wie ein ständiges [c]new Object()[/c] irgendwo im code ...

ohne code lässt sich nicht viel sagen ... außer das irgendwelche objekte eben nicht durch den GC aufgeräumt werden ...
 
Code kann ich leider keinen anbieten, da es 49 Dateien sind und ich nicht genau weiß wie ich das hier posten soll...

Finde zu offenen Referenzen nix bei Google, was meinst du damit?
 
Was du brauchst ist ein heapdump. (= kompletten Speicher der VM auf die Platte schreiben) Den kannst du z.b. mit Hilfe von jconsole erzeugen. Zum analysieren der Dumps gibt es diverse Tools. Ich bevorzuge da meistens Eclipse MAT. Wenn man MAT installiert hat kann man in Eclipse einfach den heapdump öffnen und sich die "leak suspects" anzeigen lassen. Wenn man weiß welche Objecte den Speicher blockieren kann man auch meistens leicht darauf zurückschließen wo der Fehler liegt.

Memory Analyse Teil 1 – Java Heapdumps erzeugen | codecentric Blog
Eclipse Memory Analyzer Open Source Project
 
offene referenzen kannst du dir in etwa so vorstellen das du selbst zwar keine referenz mehr auf ein objekt hast aber sehr wohl java selbst ...

z.b. wenn du eine GUI hast hält java selbst viele referenzen auf die angezeigten objekte ... auch wenn du selbst deine eigenen alle auf null setzt ...

gut .. auch wenn das jetzt nur ein beispiel ist und man das auch schlecht auf andere dinge umsetzen kann trifft es in etwa das problem
 
Geiler Stoff 😀

Hab ne Liste bei in einem meiner Objekte entdeckt die über 30k Einträge hatte, obwohl es eig. 2-3 sein sollten :applaus:

30% meines Heaps werden von dem Array hier belegt, das hat auch an die 10k Einträge. Kann mir einer sagen was das is?
com.sun.jmx.remote.internal.ArrayNotificationBuffer

Gehört das nicht zu der MBean (also egal)?

Gruß
Scarabol
 

Zurück
Oben