1
我的android應用程序泄漏,我應該檢查什麼?我的android應用程序泄漏,我應該檢查什麼?
我看了一下avoiding memory leaks,我在活動的onDestroy()方法中添加了一些unbindDrawables()調用來清理,但沒有任何改變。我也通過getApplicationContext()來替換每一個getContext()調用,但是沒有任何改變。
我監測DDMS日食角度堆大小:當我啓動應用程序,第一次有3MB的分配和後10關閉/重新啓動還有的10Mb的分配。
我的看法主要是由從LinearLayout中的一個子類繼承ViewFlippers和許多嵌套佈局。
編輯:
運行MAT,以確定泄漏後,犯罪嫌疑人的主要問題是:
16 instances of "org.apache.http.impl.conn.tsccm.ConnPoolByRoute",
loaded by "<system class loader>" occupy 4,000,328 (44.08%) bytes.
好是什麼意思呢? 「嘗試使用背景的應用,而不是上下文活動」 – Alexis
如果你使用,你應該使用活動場景則是因爲應用程序上下文應只用於「長期」的對象,你會泄漏內存的應用程序上下文。沒有規定說,如果你有4MB的HTTP連接池,那麼也許你沒有正確關閉您的HTTP連接,以騰出資源(緩衝區)「如果您使用的應用程序上下文,你不會泄漏內存」 –
。到處檢查您使用http連接是否正確關閉連接。 –