Freigabe von Speicher

JavaFX und die Programmierung

Moderator: wegus

Antworten
Mitch
Beiträge: 79
Registriert: 02.03.2010, 12:39

Freigabe von Speicher

Beitrag von Mitch » 10.01.2011, 15:46

Hi,
wie auch schon in meinem Vorherigem Thema habe ich immernoch Probleme mit einem Speicher überlauf.

Nun meine frage: Wie kann ich bei JavaFX objekte löschen lassen.
Bzw. hier ein kleines Beispiel:

wenn ich diese Timeline laufen lasse:

Code: Alles auswählen

var timeline = Timeline {
                repeatCount: Timeline.INDEFINITE
                keyFrames: [
                    KeyFrame {
                        time: 30s
                        action: function() {
                            //calendar=null;
                            //System.gc();
                            calendar = Calendar.getInstance();
                            day = calendar.get(Calendar.DAY_OF_MONTH);
                            month = calendar.get(Calendar.MONTH) + 1;
                            year = calendar.get(Calendar.YEAR);
                            minutes = calendar.get(Calendar.MINUTE);
                            hours = calendar.get(Calendar.HOUR_OF_DAY);
                            
                        }
                    }
                ]
            };
läuft mein Speicher voll.

Wie kann ich dieses vermeiden.
Wies aussieht werden die Variablen die dort eigentlich überschrieben werden müssen, eben nicht überschrieben, sondern neuer Speicher dafür verbraucht.
Auch wenn ich den GarbageCollector manuell ausführen lasse ergibt sich keine bessereung.

Ich suche nun seit über einer Woche nach einer Lösung. Langsam verzweifel ich daran.

Hoffe jemand kann mir helfen.

MfG

Benutzeravatar
Olek77
Beiträge: 669
Registriert: 21.03.2009, 13:09

Re: Freigabe von Speicher

Beitrag von Olek77 » 11.01.2011, 10:03

Hi,

Habe zwar noch fast 0 Ahnung von FX aber kannst du nicht nen Debugger bzw. Profiler dazuschalten um
zu sehen wo dein Speicher voll läuft?
Kann mir kaum vorstellen, dass dein Speicher beim simplen anlegen von Calendar-Objekten schon aufgibt.
Vielleicht hat deine virtuelle Maschine auch nur wenig Speicher reserviert?

Viele Grüße,

Olek
- Netbeans Certified Associate -

Mitch
Beiträge: 79
Registriert: 02.03.2010, 12:39

Re: Freigabe von Speicher

Beitrag von Mitch » 13.01.2011, 11:36

Ich hab mittlerweile eine Antwort gefunden.

Das problem lag wohl in der erstellung der Objekte dieser Timeline.

Der GC hat die Variablen der Klasse erfolgreich aus dem Speicher entfernt, jedoch nicht die Variablen, die in dem Objekt erstellt wurden.

Warum weis ich nicht. Ich bins umgangen, indem ich Die Variablen die gesetzt werden Global erstellt habe. Somit muss ich kein Objekt der Klasse erstellen. Es reicht wenn ich die Timeline starte und die Globalen Variablen überschreiben lasse. Somit erstelle ich keine unnötige Kopie davon.


MfG

Antworten