• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Instanz einer Klasse löschen

Puccini

Neues Mitglied
Hi,

ich erzeuge dynamisch mehrere Instanzen einer Klasse:
Code:
new testklass();

Die instanz wird dann nach einer gewissen zeit nicht mehr gebraucht (zeitabhänig).
Also will ich den speicher auch wieder freigeben.
hierfür hab ich eine funktion in der klasse "remove".hier werden alle intervale die in der klasse genutzt wurden gelöscht (clearInterval). dann soll auch die instanz gelöscht werden.

gibts da was wie:
Code:
this = null;

das ich in der instanz quasi in der methode welche überprüft ob die instanz noch gebraucht wird aufrufe:
Code:
this.remove();

Danke für eure hilfe!
 
Es gibt auch delete Obj, was aber nicht unbedingt den Speicher frei gibt. Die Speicherverwaltung mach JS allein ohne dass du von aussen eine Möglichkeit der Beeinflussung hast. Aber in der Regel ist sowas auch nicht nötig, wir haben seit einigen Jahren die 640 KB Grenze überschritten.
 
ja, ok...

also reicht es einfach, den jeweiligen eintrag aus meinem array zu löschen?

beim erzeugen:

Code:
tmpArr.push(new testklass());

dann entfernen in der instance:
Code:
    for(i in tmpArr)
    {
        if(tmpArr[i] == this)
        {
            tmpArr.splice(i,1);
            break;
        }
    }

:D
 
Ob es ausreicht läßt sich nicht sagen, da du ja nicht sagst was du als Bedingung definierst.
 
mir ging es hauptsächlich darum, kein speicherleck zu programmieren.
da, wenn das script läuft, es länger zeit aktiv ist auf der seite und viele Instanzen erzeugt werden sollen.

diese werden dann halt immer wieder "vernichtet" wenn ich sie nicht mehr brauche.
 
Closures kann man kaum umgehen, da sie ein grundlegendes Sprachfeature sind. Trifft auch nur auf den IE zu.

Wenn das Objekt aus dem Array gelöscht wird, sollte die Carbage Collection das wirklich entfernen. Darauf muss du einfach hoffen, daran ändern kann du nix.

Infos dazu (Firefox): Compartments « Andreas Gal
 
Zurück
Oben