2011-02-25 99 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