2011-09-15 80 views
0

我使用setContentView後,我可以解僱它並設置另一個?解僱內容視圖

設置一個又一個不取代以前的,但它不釋放內存

有沒有辦法從內存中釋放出來?

我以前adb shell dumpsys meminfo <pid>顯示此:

    native dalvik other total 
     size:  24836  5703  N/A 30539 
    allocated:  23140  3365  N/A 26505 
     free:   1559  2338  N/A  3897 
     (Pss):   1571  2673 22374 26618 
(shared dirty):  1236  4104  2672  8012 
(priv dirty):   1512  1928 20552 23992 

Objects 
     Views:   0  ViewRoots:  0 
AppContexts:   0  Activities:  0 
     Assets:   3 AssetManagers:  3 
Local Binders:   11 Proxy Binders:  19 
Death Recipients:  0 
OpenSSL Sockets:   0 

SQL 
     heap:   0  memoryUsed:  0 
pageCacheOverflo:  0 largestMemAlloc:  50 
+0

「設置另一個取代以前,但它不釋放內存」 - 你怎麼確定這一點? – CommonsWare

+0

@CommonsWare:我檢查前後的內存。我需要打電話給GC嗎?我知道這不是保證,但它更好,不是? – piojo

+0

「我檢查前後的記憶」 - 以及**如何精確地**你做了那個?我知道檢測內存泄漏的唯一方法就是使用MAT。如果您使用MAT,您可以使用它來查找問題的根源,也可以在您的問題中提供更詳細的信息。 http://android-developers.blogspot.com/2011/03/memory-analysis-for-android.html「我需要打電話給GC嗎?」號碼 – CommonsWare

回答

0

您可以使用System.gc()的調用,並試圖迫使虛擬機來釋放內存。你必須認爲Android是Java,然後垃圾收集器是無論如何它仍然是釋放內存的唯一方法。

P.S:試着做這個調用,如果它在一段時間內不釋放內存(參見LogCat),那麼來這裏給我們展示一些源代碼:)。