2011-11-24 44 views
1

我在窗體上有一些按鈕。當我點擊每個按鈕時,使用相同的按鈕運行新窗體。當我點擊很多次時,顯示錯誤OutOfMemory。
我認爲這是因爲我創建了很多表單對象。
如果表單存在,可以清除堆棧或從堆棧使用表單嗎?OutOfMemory錯誤,使用lwuit

回答

1

您需要爲您的代碼使用Singleton模式。在單例模式中,它只會創建Form類的一個對象。如果對象爲null,那麼它將創建一個新的,它將返回當前的一個。爲此,請參閱以下代碼。

// Private Constructor 

private static myForm thisForm = null; 

private myForm() 
{ 
    thisForm = this; 
} 

// Now to Create Object, you need to create following getInstance Method 

public static myForm getInstance() 
{ 
     if (thisForm == null) 
     { 
       thisForm = new myForm(); 
     } 
     return thisForm; 
} 

在您的整個代碼中嘗試以上邏輯。你的OutOfMemory問題將會100%解決。

3

您正在保留導致內存泄漏的舊組件的指針(引用)。確保永遠不要將組件存儲爲班級成員,除非您稍後再清除它們。

+0

我不明白我可以如何解釋這一點。如果在指向組件的類(成員字段)中保留一個變量,則會發生內存泄漏(例如,指向先前窗體的指針指向以前的窗體等)。 –