2011-02-25 104 views
1

即时通讯相当肯定这是内存泄漏,但不知道如何解决它Android的内存泄漏

截图日食内存分析器(监听器是由一个活动启动的服务,airplaneWait是一个BroadcastReceiver)

http://oi54.tinypic.com/2cf2ws5.jpg

飞机等待是在一个线程中,在Listener的onCreate()中开始的。

private IntentFilter ftrAirplaneModeChanged = new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED); 

registerReceiver(airplaneWait, ftrAirplaneModeChanged); 

欢呼的任何帮助, ng93

回答

2

我不认为这是一个内存泄漏。我认为这只是对象的内存分析器呈现的人造物。airplaneWait有一个对这个$ 0的引用,它反过来对同一个飞机等物体有一个引用,所以你真的在这里反复看到相同的物体比很多不同的对象。桂不能区分之间“含有......”“具有参考了......”

其中之一可能是一个内部类的其他的。非静态内部类具有对其父项的隐式引用。

+0

但是,当然,您应该检查该列表中每行末尾的标识符(例如* 0x4623a740 *),以查看它们是否真的是一遍又一遍的相同的两个对象。 – johusman 2011-02-25 18:01:42

+0

这$ 0总是@ 0x4623ada0和airplaneWait总是@ 0x4623a740。这个可以吗? (我不知道这些数字是什么意思) – ng93 2011-02-25 18:34:52

+0

忘了提及另外2个BroadcastReceivers,每个$ 0有不同的代码 – ng93 2011-02-25 18:40:59