2013-05-03 78 views
0

首先我使用API​​ 10機堆持續增加

我有活動A和B.活動

我發起活動B,從A,然後我調用在OnCreate完成()() B.然後我再次從A開始活動B等等。當我這樣做時,我的本地堆每次增加大約0.5 MB。

這是我在活動B.

  super.onCreate(savedInstanceState); 
      getWindow().addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON); 
      logHeap(); //keeps track of native heap size 
      setContentView(R.layout.gameplay); 
      finish(); 
      return; 

在佈局上是位圖的唯一代碼沒有得到回收利用?我不明白爲什麼我的本地堆大小會不斷增加。

+0

你是如何創建你的位圖? – DigCamara 2013-05-03 21:23:40

+0

在代碼中沒有創建任何位圖。我有一個圖像在xml中聲明爲背景 – Jake 2013-05-03 21:27:11

回答

0

當您不再需要位圖時,應確保調用bitmap.recycle()。 GC可能需要一段時間才能回收位圖。

-1

不完全是答案,而是一種獲得答案的方式。如果您在Eclipse中使用MAT(http://www.eclipse.org/mat/)並調試您的應用程序,您可能會發現究竟是什麼導致了應用程序本地堆使用的增長。

此外:從Eclipse開始,如果您訪問DDMS,您可能可以使用描述here的技術來查看哪些對象正在增長。

+0

MAT是否跟蹤本機堆?內存和本機堆似乎有區別 – Jake 2013-05-03 21:38:01

+0

它被描述爲「Eclipse內存分析器是一個快速且功能豐富的Java堆分析器,可幫助您查找內存泄漏並減少內存消耗。」所以,是的。 – DigCamara 2013-05-03 21:39:07

0

找到了大部分。

顯然是從資產

Typeface tf = Typeface.createFromAsset(getAssets(),"fonts/Capture_it.ttf"); 

創建不是垃圾收集。

刪除它似乎解決了大部分問題。