Android 本机堆不断增加

Android 本机堆不断增加,android,memory,bitmap,android-memory,Android,Memory,Bitmap,Android Memory,首先,我使用API 10 我有活动A和活动B 我从A启动活动B,然后在B的oncreate()中调用finish(),然后再次从A启动活动B,依此类推。当我这样做的时候,我的本地堆每次都会增加大约.5MB 这是我在活动B中仅有的代码 super.onCreate(savedInstanceState); getWindow().addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON); logHe

首先,我使用API 10

我有活动A和活动B

我从A启动活动B,然后在B的oncreate()中调用finish(),然后再次从A启动活动B,依此类推。当我这样做的时候,我的本地堆每次都会增加大约.5MB

这是我在活动B中仅有的代码

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

布局中的位图是否没有得到回收?我不明白为什么我的本地堆大小会不断增加

当不再需要位图时,应确保调用的是bitmap.recycle()。GC回收位图可能需要一些时间。

不完全是答案,而是获得答案的一种方法。如果您在Eclipse中使用MAT()并调试应用程序,您可能会发现到底是什么导致了应用程序本机堆使用量的增长

另外:在Eclipse中,如果您访问DDMS,您可能能够使用所描述的技术来查看哪些对象正在增长

找到了大部分

显然是从资产中创造出来的

Typeface tf  = Typeface.createFromAsset(getAssets(),"fonts/Capture_it.ttf");
垃圾没有被收集


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

如何创建位图?没有任何位图是用代码创建的。我在XMLMAT中声明了一个图像作为背景。MAT是否跟踪本机堆?内存和本机堆之间似乎存在差异,meIt的描述是“Eclipse内存分析器是一个快速且功能丰富的Java堆分析器,它可以帮助您发现内存泄漏并减少内存消耗。”所以,是的。