2014-11-04 53 views
1

例如,我们有两个相同的Android设备,每个具有2GB RAM(能量相关内存)。可用内存在Android设备上消耗较少电量?

设备1:1GB RAM因运行应用程序而忙,1GB RAM空闲。

设备2:2GB RAM正忙于运行应用程序。

想象一下,CPU不会被运行的应用程序使用,或者只是使用一点。内存也保持不变(不经常重写)。设备2是否会比设备1更快地失去电力(电池电量为0%)?

请向我解释这个问题,我真的很好奇java-android内存的用电量。

+0

你有没有关于垃圾收集器必须运行很多次? – StackFlowed 2014-11-04 17:46:13

+0

让我们忘记垃圾收集器,这不是我很好奇的事情:D – careful7j 2014-11-04 22:22:33

+0

如果您好奇,无所谓...这是一个后台进程,它会耗尽你的电池,如果它非常频繁地运行... – StackFlowed 2014-11-04 22:29:42

回答

0

简单的答案是:不。

让我们在选择如何为较少的内存可能会花费你更少的功率迭代:

最现实的情况是,有更多的可用内存意味着更多的硬盘/闪存卡缓存命中率和这些耗电设备从而少。更多的内存也意味着更少的激励来运行GC,并节省CPU时间(并且如果您的系统使用swap/zram,大多数手机没有交换可能花费更多)。你可能会在这里节省一些权力。

另一种选择是手机有更多的内存芯片,并且内核足够聪明,可以压缩内存并使闲置的芯片闲置。这项技术就是为了在服务器中热插拔RAM,但我还没有听说过使用它的手机。

最后,您可能会确信,保持内存零的成本可能低于保存随机数据(RAM必须定期刷新其内容)的成本。让我们对3GB内存的笔记本电脑进行一些疯狂的测试。免费给我们:

 
       total  used  free  shared buffers  cached 
    Mem:  3077800 2760220  317580  40308  219036 1137020 
    -/+ buffers/cache: 1404164 1673636 
    Swap:  2047996  7492 2040504 

并记入的/ dev/kmem的全零页给我们:调零= 34,用= 786398.让我们尝试下探缓存:

 
sync && echo 3 > /proc/sys/vm/drop_caches && free 
      total  used  free  shared buffers  cached 
Mem:  3077800 1686792 1391008  44884  1248  326864 
-/+ buffers/cache: 1358680 1719120 
Swap:  2047996  7492 2040504 

而结果住宿同样的:Zeroed = 34,used = 786398.Linux并没有将可用内存清零,在现代内核中可能不会有很多满满的零页,因为它们都映射到相同的物理内存。机械论被称为零页(http://lwn.net/Articles/340370/

+0

谢谢你的扩展解释! – careful7j 2014-11-04 22:21:16

1

那么,这个概念很简单。无论是设备(手机,笔记本电脑)和任何平台(android,windows,ios),软件/应用程序不会耗尽电池。它的CPU和GPU消耗电池。

所以运行的应用程序越多,cpu和gpu的使用量就越多,因此更多的电池将被耗尽。

3

根据Wikipedia,(S)DRAM的功耗取决于时钟速度,以及内存是否在使用或闲置。这并不意味着您需要关心开发人员,因为其他内容对内存使用的影响远远超过内存使用。