2013-01-24 51 views
0

我正在努力解決的問題是是否需要取消取消。由於我在使用Chrome時遇到了一些問題。說我有這個代碼。JavaScript內存管理(信息)

function MyClass() {} 

MyClass.prototype.MyFunction = function() { 
    this.data = "foo"; 
} 
var c = new MyClass(); 
c.MyFunction(); 

現在,一旦調用該函數應該允許它是GC,但應在功能到底有this.data = null。這也應該是標準的。

+1

該代碼將拋出一個TypeError。你是否想要實例化MyClass? –

+0

這裏是一個有用的文章:https://www.ibm.com/developerworks/library/wa-memleak/ – Yoshi

+0

是的,我在這裏寫代碼,忘了補充說。 –

回答

1

您的代碼將無法使用。您應該首先創建您的類的實例:

var c = new MyClass(); 
c.MyFunction(); 

因爲MyFunction是實例函數。

否則,還有delete運算符(referenceindepth analysis),用於刪除對象成員(但不是對象本身)。對象可以因此在沒有辦法引用它們的比較多,所以

c = undefined; 

應該說服Javascript功能來收集垃圾這個對象實例,並釋放被其取內存資源被垃圾收集。

如果你的對象實例的實例這種方式是不同的:

c = new MyClass(); 
c.MyFunction(); 
delete c; // success 

因爲c是這一次的全球(window)的成員,因此可以從文件中刪除。

+0

我的主要問題是我無法刪除主類。 –

+0

@Sam_Benne:班級或班級實例? –

+0

實例。它是一個「單頁應用程序」因此,我需要保留主要實例,但是我可以清除其他較小的實例。 –