2011-10-21 165 views
3

我一直在閱讀關於Android中的內存泄漏。在我的申請中,我遇到了異常。當我GOOGLE了它,我發現它是一個常見的錯誤(this SO questionthis SO question處理該問題),我使用了一個建議的解決方案。
我發現一個官方Android documentation處理該問題和SO question解釋官方的例子。它說,在例如:android內存泄漏

可繪有其本身所具有的 參考活動(上下文),這反過來有引用 到相當多的東西

我TextView的參考仍然不明白一件事:如果Drawable沒有被聲明爲靜態的,爲什麼它不會在活動的onDestroy()方法中被銷燬? Drawable被銷燬,TextView被銷燬,Activity被銷燬 - 沒有引用並且沒有內存泄漏。它不是應該如何工作?

+1

http://mobi-solutions.blogspot.com/2010/08/how-如果你想要創建和.html檢查這也。 –

+0

thanx,很好的例子 – Maggie

回答

2

我還是不明白一兩件事:如果繪製對象是不是 靜態的,爲什麼沒有在活動的破壞的onDestroy()方法中聲明? Drawable被銷燬,TextView被銷燬,Activity被銷燬 - 沒有引用,也沒有內存泄漏。是不是它應該如何 工作?

是的,這是它應該如何工作,但他們可能不會立即銷燬在onDestroy()。無法預測垃圾收集器運行的具體時間。有很多事情觸發了這一點。例如,如果您的應用程序在允許的堆內存上運行不足,或者某些其他應用程序試圖分配更多內存,則可能需要更多內存。

如果您希望立即銷燬位圖,請致電Bitmap.recycle()

GC如何運行,以及有關在Android的內存管理的其他許多有用的信息,在此視頻中解釋道:

http://www.youtube.com/watch?v=_CruQY55HOk

+0

是否有任何其他對象,除了位圖需要手動釋放onDestroy()? – Maggie

+0

沒什麼我知道的。當然如果你有打開的文件或者流,你應該在不再需要時關閉它們。 – Caner