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连接是否正确关闭连接。 –