由于Android或Java在虚拟机上运行,它会使用更多功能吗?
由于Android应用程序在基本上是虚拟处理器的JVM(Dalvik VM)上运行,并且每个虚拟指令都必须映射到底层芯片组的本机指令,因此由于这种映射的开销,这种映射是否会导致更多的功耗? 这个问题可以扩展到Java,也可以表述为“ Java应用程序使用更多功率吗?”。这就是为什么Android手机比其他平台/手机具有如此惊人的电池续航能力的原因吗? 编辑:根据答案,我已经澄清了几点,因为我错误地互换了JVM和Dalvik的意见。在本文中,我只是在谈论Java,以询问它是否使用了更多功率,如果可以,在概念上是否也适用于Android,并且会导致电池寿命缩短。 上下文:引自维基百科: Java字节码类似于C代码的汇编语言。 从编译器的角度来看,Java虚拟机只是具有指令集Java字节码的另一个处理器,可以为其生成代码。 JVM具有堆栈体系结构。Dalvik是一个过程虚拟机,它与JVM的虚拟化类型不同,并具有寄存器体系结构。 由于Java编程语言被编译为字节码(类似于程序集)并且在虚拟处理器上运行,因此它提供了真正的软件代码可移植性。另外,由于存在用于Linux的JVM,并且Linux已移植到开放硬件上,因此这种组合可以在整个堆栈上提供真正的应用程序可移植性。 力量:问题本质上可以归结为这一点-对于您的软件代码或应用程序的相同功能集,您的CPU时钟周期的百分比归因于运行时环境。这是在现代JVM的即时编译环境中进行的,在该环境中,如果将字节码编译为基础芯片组的本机指令,则运行时应仅在jit编译期间处于活动状态。因此,在具有运行时环境的情况下,要用掉多少CPU时钟周期,这预计会导致功耗开销。我只对功耗方面感兴趣,而不对与静态类型化和内置语言相比的相对性能感兴趣,并且了解Java的优势。可能与之相关的子问题: Java运行时是否使用libc来实现其功能? 这些功耗相关点中的任何一个都转换为Dalvik VM和Android吗? 除了讨论屏幕和无线芯片组而不是概括Android电池消耗低的情况外,我们不妨讨论一下iPhone 5的1440 mAH电池与现代Nexus手机相比是多么小。整个思路(Java,虚拟处理器,指令映射,Android)之所以出现,是因为一位iPhone忠实的朋友声称这可能是其iPhone的电池续航时间比我(令人敬畏的)联系更长的电池寿命的原因。 无论如何,感谢您的以下回答。