本机堆不断增加

时间:2013-05-03 21:14:23

标签: android memory bitmap android-memory

首先我使用API​​ 10.

我有活动A和活动B.

我从A启动活动B.然后我在B的oncreate()中调用finish()。然后我再次从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;  

布局中的位图是否未被回收?我不明白为什么我的原生堆大小会不断增加。

3 个答案:

答案 0 :(得分:0)

当您不再需要Bitmap时,应该确保调用bitmap.recycle()。 GC可能需要一段时间才能回收Bitmap。

答案 1 :(得分:0)

找到了大部分内容。

显然是从资产创建

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

不是垃圾收集。

删除它似乎解决了大部分问题。

答案 2 :(得分:-1)

不完全是答案,而是一种获得答案的方法。如果您在Eclipse中使用MAT(http://www.eclipse.org/mat/)并调试您的应用程序,您可能会发现导致应用程序本机堆使用增长的确切原因。

此外:从Eclipse开始,如果您访问DDMS,您可以使用here描述的技术来查看正在增长的对象。