由于Android应用程序运行在基本上是虚拟处理器的JVM(Dalvik VM)上,并且每个虚拟指令都必须映射到底层芯片组的本机指令,因此这种映射是否会由于这种映射的开销而导致更多的功耗?
这个问题可以扩展到 Java,也可以表述为“Java 应用程序是否使用更多功能?”。这就是 Android 手机与其他平台/手机相比电池寿命如此惊人的原因吗?
编辑:根据答案,我澄清了几点,因为我错误地将 JVM 和 Dalvik 互换使用。在这一点上,我谈论 Java 只是为了询问它是否使用更多功率,如果是,那么这在概念上是否也适用于 Android 并且是否会导致电池寿命缩短。
上下文:引自维基百科:
由于 Java 编程语言被编译为字节码(类似汇编)并在虚拟处理器上运行,因此它提供了真正的软件代码可移植性。此外,由于有一个适用于 Linux 的 JVM,并且 Linux 已被移植到开放硬件上,因此这种组合可以在整个堆栈中提供真正的应用程序可移植性。
功率:问题基本上归结为这一点 - 对于软件代码或应用程序的相同功能集,您的 CPU 时钟周期的百分比归因于运行时环境。这是现代 JVM 的即时编译环境,如果字节码被编译为底层芯片组的本机指令,那么运行时应该只在 jit 编译期间处于活动状态。那么在运行时环境中使用了多少 CPU 时钟周期,这预计会导致功耗开销。我只对功耗方面感兴趣,而不是与静态类型和构建语言相比的相对性能,并了解 Java 的优势。可能相关的子问题:
无论如何,感谢您的回答。
Oracle 最近决定开始对其 JVM 的商业用途收费。
我们的团队已经开始改用 OpenJDK,并且发现一切似乎都运行良好,只是我们的性能变慢了。
我们的服务器是 linux 服务器,根据我们的性能团队,
我们已经观察到大多数 java 调用的速度很慢。我们查看了日志并调查了一些调用,我们没有看到任何异常或错误,只是速度很慢。
有没有其他人有任何关于这是否属实的数据,即 OpenJDK 平均比 Oracle JVM 慢?
回答:对我们来说,这个问题被确定与haproxyUbuntu 和 OpenJDK 相关。如果将这 3 件事结合起来,我们会在每个套接字连接上看到额外的 5 毫秒延迟。改变这三个因素中的任何一个,性能就会恢复。
我也会将此作为答案发布,因此可以在两个地方找到它
预期算法:
preloaded_java -cp /usr/share/java/....jar:. qqq.jar) 时,它会连接到现有加载的 JVM,加载其他 jar(如果有)并执行主类。preloaded_java 只是路由输入和输出并处理中断等。更新实施了概念证明:http : //vi-server.org/vi/code/prejvm/
$ clojure prejvm.clj&
[1] 2883
$ nc 127.0.0.1 7711 <<< '{"mainclass" "test.Hello"}'
$ nc 127.0.0.1 7712
java.lang.ClassNotFoundException: test.Hello
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
...
at clojure.main.main(main.java:37)
$ nc 127.0.0.1 7711 <<< '{"classpaths" ["file:///home/vi/code/prejvm/"], "mainclass" "test.Hello"}'
$ nc 127.0.0.1 7712
Hello, world; number of args is 0
qwe q e32e qda
qwe q e32e qda
$ nc 127.0.0.1 7711 <<< '{"classpaths" ["file:///home/vi/code/prejvm/"], "mainclass" …Run Code Online (Sandbox Code Playgroud) 我正在使用 VisualVM,它是一个 Java 虚拟机分析器。我正在尝试启动应用程序 jvisualvm 并给出消息
我正在研究型号为 VPCEA24FM 的 Sony Vaio 笔记本电脑,它具有英特尔酷睿 i3 处理器。
我的问题
如何确定我的 CPU 是否使用动态 CPU 频率切换,如果是,我应该关闭它以及将要权衡什么以及如何权衡?
我已经下载了Java SE Runtime Environment 6u24和Java SE Development Kit 6u24,但是当我去 CMD 并输入java -version它仍然说:
java version "1.4.2_03"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-b02)
Java HotSpot(TM) Client VM (build 1.4.2_03-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)
编辑:是的,我下载后安装了它们。
编辑:这就是我的 PATH 样子
PATH=C:\oracle\ora92\bin;C:\orant14\bin;C:\orant5a\bin;C:\oracle\ora92\jre\1.4.2\bin\client;C:\oracle\ora92\jre \1.4.2\bin;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;C:\WINDOWS\system32;C:\WINDOWS ;C:\WINDOWS\System32\Wbem;C:\Program Files\Wave Systems Corp\Dell Preboot Manager\Access Client\v5\;C:\orant5a\jdk\bin;C:\orant14\jdk\bin;C: \Program Files\QuickTime\QTSystem\
我试图在我的 Macbook Air 上安装 eclipse。当我运行安装程序时,我收到此消息
似乎没有像其他应用程序那样专门用于 JVM 的官方页面。当我搜索“安装 jvm”时,我被引导到“下载 java ”页面。
无论如何,我从该页面安装了最新的 Java,但该消息仍然存在,这让我更加困惑。
问题是:
如果 JVM 旨在“在任何地方”启用 Java,那么在我安装最新的 Java 之后不应该已经安装了吗?
当我在 google 周围搜索时显示了很多页面,它们看起来都不是真正的页面,我什至jvm在 java.com 中搜索,但没有任何有用的内容出现。
为什么这么难找到这么流行的工具,我应该去哪里下载JVM?