Android设备上的可用内存消耗更少的电量吗?

时间:2014-11-04 17:42:42

标签: java android memory ram battery

例如,我们有两个相同的Android设备,每个设备有2GB RAM(与能量有关的内存)。

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

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

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

请向我解释这个问题,我对java-android内存耗电量非常好奇。

3 个答案:

答案 0 :(得分:3)

根据Wikipedia,(S)DRAM的功耗取决于时钟速度,以及存储器是在使用还是闲置。这并不意味着你需要关注它作为开发人员,因为其他因素会比内存使用更多地影响能耗。

答案 1 :(得分:1)

嗯,这个概念很简单。

无论设备(手机,笔记本电脑)和平台(android,windows,ios)是什么,软件/应用程序都不会耗尽电池电量。它的cpu和gpu会耗尽电池。

运行的应用程序越多,cpu和gpu的使用就越多,因此会耗尽更多的电池。

答案 2 :(得分: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中计算满零的页面给我们:Zeroed = 34,used = 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/