Android SDK的堆工具中可见的“非Java对象”类型是什么?

时间:2011-12-06 14:47:21

标签: android memory-leaks heap

我正在与内存泄漏作斗争,我在eclipse中使用了Heap工具。

正如您在此屏幕截图http://hpics.li/b7c60de中看到的那样,我的内存的更大部分由 非Java对象 使用,但我不知道是什么是那种类型。是C ++代码,资源对象如图像......?

1 个答案:

答案 0 :(得分:0)

您的评论表明您至少泄漏了一个对每个活动的引用。你有任何静态Drawables,视图,上下文等? 你有任何内部非静态类(它们保留对外部类的引用)? 您是否在应用程序中保留任何Drawables,Views,Contexts等,或者在活动时间长于活动的任何其他地方。

这些是通常会泄露活动的3件主要内容。

Drawables,Views,Adapters和其他各种东西都会引用它们创建的Context(它的父Activity),所以如果你让它们比Activity本身更长时间活动,那么Activity就会留在内存中。

这个video解释了这一切,以及如何使用一些工具来帮助您调试问题。