Wenn ich den folgenden Code haben:Müssen primitive Werte für die Grabage-Sammlung aufgehoben werden?
function MyClass() {
this.data = {
// lots of data
};
}
var myClassInstace = new MyClass();
var myobj = {
num:123,
str:"hello",
theClass:myClassInstance
};
Ich weiß, es ist absolut notwendig zu tun:
myobj.theClass = null;
Um myClassInstance
und seine data
Eigenschaft für GC frei. Was soll ich aber mit myobj.num
und myobj.str
machen? Muss ich ihnen auch einen Wert von null
geben? Ändert die Tatsache, dass sie primitiv sind, irgendetwas in Bezug auf GC?
Möchten Sie "myobj" beibehalten, aber sicherstellen, dass alle seine Werte keinen Speicher belegen oder möchten Sie "myobjt" vollständig aus dem Speicher löschen? – vlaz
"Ich weiß, dass es absolut notwendig ist zu tun:' myobj.theClass = null; '..." ** Nein, ist es nicht. ** –
Ja, ich möchte "myobj" vollständig abwischen. Und wenn ich ** das ** tun will, bin ich mir ziemlich sicher, dass es notwendig ist, 'myobj.theClass = null 'zu tun, wenn ich keine Speicherlecks verursachen will. –