使薩姆測試這個星期,我發現這樣的情況:性差異
當我使用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,混合模式) –