使萨姆测试这个星期,我发现这样的情况:性差异
当我使用JDK/JRE /斌/ Java的Java可执行文件运行Tomcat中性能比我用jdk/bin/java运行时要好很多。 问题是:有人知道为什么jdk包提供了2个java可执行文件,它们之间的区别是什么,证明了性能差异?
使萨姆测试这个星期,我发现这样的情况:性差异
当我使用JDK/JRE /斌/ Java的Java可执行文件运行Tomcat中性能比我用jdk/bin/java运行时要好很多。 问题是:有人知道为什么jdk包提供了2个java可执行文件,它们之间的区别是什么,证明了性能差异?
java.exe文件实际上是相同的。 JDK是Java开发工具包,它包含开发应用程序所需的所有Java可执行文件。
的JRE是Java运行时环境,其中包括你所需要的运行Java应用程序
所以对于运行在部署模式的应用程序,你只需要JRE,最终用户可能只会有一个JRE而不是JDK。
这并没有解决为什么JDK版本可能比JRE慢...这个问题(真正的)部分的任何想法? – rolfl
我迟到了,但是......我来到这里寻找OpenJDK中几个java
变体之间的区别。我最后只是对问题的“它们之间的区别”作了一些澄清和附加问题;希望它有帮助。
在OpenJDK里面找(我使用OpenJDK的1.7.0)基本目录我看到 java
S,都具有不同的哈希和:
bin/java
,二进制jre-abrt/bin/java
,二进制;假设ABRT是Automatic Bug Reporting Tooljre/bin/java
,这是一个外壳脚本,其格式为jre-abrt/bin/java
变体,采用两种不同方式之一(详见下文)。上面的二进制变体具有相同的文件大小和创建时间(在我的版本和系统中,无论如何),但两个文件之间有4个字节不同(我没有看得更远 - 这是其他你的问题的一部分 - 但他们是不同,它看起来不像一个ASCII字符串,例如)。
脚本变体是你说的更快,这似乎违反直觉,因为它似乎在做更多。 (或者也许你只看到执行脚本的时间,而不是命令?)。该脚本检查ABRT共享对象文件是否存在,如果存在,它将通过(如-agentpath...
).so
和abrt=on
。再次,这似乎应该只是更多工作...假设使用ABRT。
如果你这个主题仍然有兴趣,或许会看到以下有趣:
/usr/lib64/libabrt-java-connector.so
存在或无论是在你的jre/bin/java
脚本)jre-abrt/bin/java
)更快inotify
或strace
什么的,但是这可能是巨大的像这样的服务。
你可以分享基准测试吗?他们之间没有区别。 JRE是运行时环境,它只需要运行程序并且不包含额外的实用程序(jstack,jconsole,javah)。 JDK bin中的java.exe到JRE bin –
之间的性能不应该变化。另外,请分享每个版本的Java版本(java -version)。我假设你正在运行OpenJDK。文件大小有差异吗?你可能有冲突的JVM –
对不起,但我没有基准测试...我的问题是基于tomcat启动时间,与jdk可执行文件需要600.000毫秒开始和jre需要160.000毫秒。差别很大。该版本是OpenJDK 64位服务器虚拟机(构建24.45-b08,混合模式) –