Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Android应用程序重启次数越多,需要的内存就越少?_Android_Performance_Memory_Service_Ram - Fatal编程技术网

为什么Android应用程序重启次数越多,需要的内存就越少?

为什么Android应用程序重启次数越多,需要的内存就越少?,android,performance,memory,service,ram,Android,Performance,Memory,Service,Ram,所以我一直在写我的论文,在写的过程中我得到了一些有趣的结果,我无法解释,所以这里可能有人对安卓有更多的了解 工作简介 在论文的一部分中,我研究了Messenger实现的性能。在越来越多的服务之间来回发送消息时,对使用不同服务的核心应用程序进行了测量。可能值得一提的是,每个服务都位于另一个应用程序中。因此,这意味着1个服务=1个应用程序,其唯一任务是托管服务 进行了这两项试验 连接到数量不断增加的服务时测量RAM 在向越来越多的服务发送消息时测量RAM 如何进行测量 RAM测量始终在建立服务连接后

所以我一直在写我的论文,在写的过程中我得到了一些有趣的结果,我无法解释,所以这里可能有人对安卓有更多的了解

工作简介 在论文的一部分中,我研究了Messenger实现的性能。在越来越多的服务之间来回发送消息时,对使用不同服务的核心应用程序进行了测量。可能值得一提的是,每个服务都位于另一个应用程序中。因此,这意味着1个服务=1个应用程序,其唯一任务是托管服务

进行了这两项试验

  • 连接到数量不断增加的服务时测量RAM
  • 在向越来越多的服务发送消息时测量RAM
  • 如何进行测量 RAM测量始终在建立服务连接后进行。每个数据测量值取5次,然后除以5得到平均值。每次重新测量之前,应用程序都会重新启动。为了获得RAM使用情况,使用了Android Monitor内存使用工具。这给了我一个内存转储文件,就像您可以在“查看总体内存分配”标题下看到的一样。我一直在查看的数据是进程的PSS总计,它是文件中提到的千字节

    测试是如何运行的 在测试1中,我从1个服务开始,获取5个数据点,然后继续到2、3和4,并同时向上移动30个服务。测试1完成后,我开始测试2,再次返回到1服务,并增加到30

    结果 (注意,为了论文的目的,在图中我将每个服务称为“模块”)

    在这里,您可以在图形中看到测试1的打印结果。值为PSS

    这是测试2的绘图结果,图中的值是PSS

    因此,看看这个,它看起来有点好,因为我使用的服务越多,应用程序使用的RAM就越少。这很奇怪,但至少在两个测试用例中都发生了相同的事情。然而,当你把这些图放在一起时,我可以看到它实际上是一个连续的斜坡,服务的数量并不重要。当测试2以1个服务开始时,它实际上与测试1以30个服务使用相同的RAM。这可以在图表中看到,遗憾的是,我不能在同一个图表中为您绘制这一点,但是我认为您可以在我提供的一次图表中清楚地看到这一点

    所以试验是按这个顺序进行的

    测试1(1个服务->30个服务)->测试2(1个服务->30个服务)

    所以问题来了 这是怎么回事?我无法解释为什么RAM使用率会像这样下降。我能想到的唯一一件事是,Android是否有一些内置的东西,可以在每次重启时优化应用程序RAM的使用。我对安卓RAM,尤其是PSS测量的了解不是很高,但希望所有这些都不是一个愚蠢的问题

    我希望有人能解释一下,因为我觉得这很有趣

    先谢谢你

    编辑 正如这里所要求的,是测试1的私有内存使用情况,我的测试2的数据文件由于某种原因被混淆了,不能被信任


    好的,所以私有内存会像预期的那样增加,但是我仍然想知道PSS值是怎么回事?我的想法是,由于使用了更多的服务,共享内存也会更多=PSS值更高?但是现在这仍然解释了为什么测试1中30个服务的PSS与测试2中1个服务的PSS相同。

    当您测量私有内存使用情况而不是PSS时会发生什么?很遗憾,我没有绘制私有数据,因此很难判断。当我收到我的帖子时,我会编辑它。我相信PSS可以更好地估计应用程序与私有内存相比的RAM重,这是错误的吗?假设私有内存没有减少,那么PSS下降的原因是什么?