2012-08-13 48 views
0

喜iv'e對具有機器人的Android堆重新啓動應用程序時

08-13 21:46:22.382: I/dalvikvm-heap(10859): Grow heap (frag case) to 20.578MB for 2400016-byte allocation 

下面成長堆做錯誤周圍看的是日誌(過濾)成長在那裏我反覆剛剛復出了我的申請,並開始它一遍又一遍。正如你所看到的,每次重啓都會增加堆。怎麼可能?完全退出時,應用程序堆不應該清除嗎?

如果我在代碼中進行任何更改並重新啓動應用程序,堆將重置爲其原始值。這種行爲是否正常?

每當我在應用程序中切換活動時,也會發生同樣的堆增長。我在andengine中編寫了我的應用程序。我得到了80MB的堆,並且裝載量更大,裝載量更大。

I/dalvikvm-heap(13094): Grow heap (frag case) to 13.198MB for 2400016-byte allocation 
I/dalvikvm-heap(13094): Grow heap (frag case) to 13.354MB for 2400016-byte allocation 
I/dalvikvm-heap(13094): Grow heap (frag case) to 13.350MB for 2400016-byte allocation 
I/dalvikvm-heap(13094): Grow heap (frag case) to 13.350MB for 2400016-byte allocation 
I/dalvikvm-heap(13094): Grow heap (frag case) to 13.406MB for 2400016-byte allocation 
I/dalvikvm-heap(13094): Grow heap (frag case) to 13.268MB for 2400016-byte allocation 
I/dalvikvm-heap(13094): Grow heap (frag case) to 13.265MB for 2400016-byte allocation 
I/dalvikvm-heap(13094): Grow heap (frag case) to 13.264MB for 2400016-byte allocation 
I/dalvikvm-heap(13094): Grow heap (frag case) to 14.818MB for 2400016-byte allocation 
I/dalvikvm-heap(13094): Grow heap (frag case) to 14.814MB for 2400016-byte allocation 
I/dalvikvm-heap(13094): Grow heap (frag case) to 14.813MB for 2400016-byte allocation 
I/dalvikvm-heap(13094): Grow heap (frag case) to 14.813MB for 2400016-byte allocation 
I/dalvikvm-heap(13094): Grow heap (frag case) to 16.421MB for 2400016-byte allocation 
I/dalvikvm-heap(13094): Grow heap (frag case) to 16.427MB for 2400016-byte allocation 
I/dalvikvm-heap(13094): Grow heap (frag case) to 16.426MB for 2400016-byte allocation 
I/dalvikvm-heap(13094): Grow heap (frag case) to 16.426MB for 2400016-byte allocation 
//**-Not A log message: here i simply changed a variables name and restarted** 
I/dalvikvm-heap(13497): Grow heap (frag case) to 12.995MB for 2400016-byte allocation 
I/dalvikvm-heap(13497): Grow heap (frag case) to 13.002MB for 2400016-byte allocation 
I/dalvikvm-heap(13497): Grow heap (frag case) to 13.002MB for 2400016-byte allocation 
I/dalvikvm-heap(13497): Grow heap (frag case) to 13.002MB for 2400016-byte allocation 

這就像關閉應用程序後保留的內存泄漏,在應用程序中,我使用sharedPreferences來保存內容。但是我沒有看到這可以在這裏產生效果。有任何想法嗎?

+0

http://www.eclipse.org/mat/ – Mike 2012-08-13 20:40:13

+0

圖片?調用回收? – Doomsknight 2012-08-13 20:45:46

+0

@mike,是的,我試過了,做了一些堆轉儲。但我真的不明白,你說什麼叫回收? – Adam 2012-08-13 22:01:55

回答

1

Android應用程序並不簡單地關閉,請參閱有關該主題的博客帖子不錯: http://blog.radioactiveyak.com/2010/05/when-to-include-exit-button-in-android.html

堆增長,因爲您的應用程序沒有關閉,它只是隱藏。儘管如此,它似乎確實存在內存泄漏。當您更改變量名稱時,堆會縮小,因爲生成了新的apk,手機上的應用程序被終止並重新安裝應用程序。

+0

不錯的閱讀,儘管在「不使用時殺死所有東西」標題下,他並沒有真正解釋如何或者甚至可以通過編程方式來實現嗎? 有沒有辦法關閉一項活動?是我想知道的,因爲activity.finish();是假的 – Adam 2012-08-14 10:32:06

+0

我沒有檢查onStop()和onDestroy()(我的應用程序調用它們兩個),並根據http://developer.android.com/reference/android/app/Activity.html onDestroy()似乎意味着這個活動應該在它死後,然而我的堆卻在增長...... – Adam 2012-08-14 10:37:30

+0

......嘆息......我想成爲一名優秀的程序員,但我只是找到了最可怕的醜陋代碼,如果插入的地方我退出我的活動,解決我的問題。 android.os.Process.killProcess(android.os.Process.myPid()); 所以非常反對Android的所有良好做法,但我不知道我是否可以拒絕使用它... – Adam 2012-08-14 12:06:27

相關問題