当活动被杀死时,堆大小如何增加

时间:2014-01-29 05:27:13

标签: android android-intent heap-memory

我不知道以前是否曾经问过这个问题,但我想知道事情是如何运作的。

我有两个活动* Test_Activity *和* Second_Activity *。 Test_Activity有一个按钮来调用Second_Activity(通过使用和 Intent 调用),在我的Second_Activity中,我有一个按钮可以返回到第一个(使用 Intent )。我尝试从测试中调用第二个,然后从第二个开始重新测试。我尝试了大约10次(在此期间没有杀死活动)当我更新时发现我的堆大小从3.027Mb - 4.002Mb增加。

之后,我在调用其他活动时将*finish()*添加到编码中,重复相同的过程10次。我发现堆大小仍在增加。怎么样..??当活动被杀死时,它不会从内存中删除......如果堆大小继续这样,那么当我的应用达到它的最高限制时,我的应用就会被杀死。什么是android中应用程序的堆大小的最大限制... ??

我想澄清的另一件事是,为什么只有2个活动(如上所述)没有太多资源的app消耗堆大小为3.027Mb?我还没有添加任何抽奖或任何东西。

1 个答案:

答案 0 :(得分:4)

这种增长(3到4MB)绝对无关紧要。如果需要,Android可以实例化并保留一些资源。如果你真的关心内存消耗,你应该做memory profiling using MAT。这是关于内存管理的非常technical article。如果你觉得程序中有一些内存泄漏(活动挂在某个地方但你不知道在哪里和怎么做),这里有Google IO video presentation可以帮助你跟踪它。

After that I added *onFinish()* to the coding Android没有调用onFinish回调方法。

应用使用的总堆未标准化。我在索尼上看到了相同的应用程序使用4到6 MB,而三星上的相同应用程序则需要15到20 MB。这是一个非常简单的应用程序......这一切都取决于制造商。只要你没有泄漏大量的内存块,或者你没有使用比实际需要的更大的资源,你就不应该担心这些不同的内存使用。