【发布时间】:2015-11-11 07:58:41
【问题描述】:
我正在使用3 Activities 开发一个应用程序,并进行了一些测试。我来自Activity 1->2->3->1 等等。我每次都使用finish() 关闭我要离开的活动。但是发生了一些事情:
为我的应用分配的RAM 内存不断增长,我不知道为什么。 18MB 应该是下限,因为这是应用程序开始的地方,24MB 应该是上限,因为Garbage Collector 在需要时出现。
即使它在大约 1 分钟内增长到 36MB(在那段时间里,我从一项活动转到另一项活动,仅此而已)。
谁能告诉我会发生什么?提前致谢!
【问题讨论】:
-
我认为这不是问题。你的应用内存很好。它在打开新活动时增加,在结束活动时再次减少。我说的对吗?
-
@HusseinElFeky 你是对的,但为什么它会在另外两个阶段(红色箭头指向的阶段)上涨?该应用程序可以管理内存较低的活动,因为我在离开时对每个活动都使用了finish(),并且一次只打开一个活动。
-
这就是Java管理内存的方式。内存使用量会增加,直到垃圾收集器运行。图表中的每个内存使用量下降都是由释放未使用内存的垃圾收集器引起的。
-
在需要时进行垃圾收集。运行时决定何时需要。只有在其他地方需要释放内存时才会出现释放内存的问题,而这正是调用垃圾收集器的时候。我看不出有问题。图上有趣的点实际上是 GC 运行之后的那些点,因为如果在 GC 运行之后使用的内存增加了,你可能会遇到问题。
-
@Robert 是的,你可以看到 GC 在哪里运行。但是你也可以看到,在第二次运行 GC 之后,内存被清理了。尽管如此,我的第一个红色箭头指向了 33mb 的新限制。
标签: android android-activity memory ram