2011-09-06 42 views
2

由於Java需要很長時間才能啓動,所以我們的solaris機器出現問題。即使是簡單的事情,Java的版本Solaris 10中的Java啓動速度很慢

>time java -version 
java version "1.6.0_20" 
Java(TM) SE Runtime Environment (build 1.6.0_20-b02) 
Java HotSpot(TM) Server VM (build 16.3-b01, mixed mode) 

real 0m34.084s 
user 0m0.088s 
sys  0m8.331s 

搞笑的是,這是僅限於的Java6:

java version "1.5.0_24" 
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_24-b02) 
Java HotSpot(TM) Server VM (build 1.5.0_24-b02, mixed mode) 

real 0m0.320s 
user 0m0.123s 
sys  0m0.138s 

任何想法?

回答

5

這是在jvm的dtrace初始化中已知的問題。在java 6u25中,我相信每次Sun Alert 1296670.1都會退出。我們在上週的一個重要環境中發現了這個問題,並且痛苦讓人難以忍受(如果您需要每分鐘運行100個進程,並且他們突然開始花費額外10秒來啓動......)。

解決辦法,如果你都寄託到您的JVM:

出口DTRACE_DOF_INIT_DISABLE =真

這一直是我們100%成功的,我們不使用JVM特定的DTrace探針,反正。

+0

太好了,謝謝你的更新,我會試試。 – pushy

+0

我們剛剛遇到了與Solaris相同的問題(5.10 Generic_144488-06 sun4u sparc SUNW,SPARC-Enterprise)和Java版本1.6.0_24-b07 - 您的答案拯救了一天!有趣的是,這個問題並沒有顯示出來,也沒有出現在我們所有的系統上(運行相同的操作系統和Java版本) – ktf

1

也許Java 6安裝在網絡驅動器上。你可以嘗試

df `which java` 
+0

不,不是網絡驅動器,兩個jdk都在同一個驅動器上運行。 – pushy

1

你可以嘗試

truss java -version 

,看它是否等待很長一段時間在一個特定的系統調用。

+1

好主意,最後一行等待很長時間:'open64(「/ dev/dtrace/helper」,O_RDWR)\t \t = 3'當我在Java5上做一個桁架時,這個調用不會出現,而是調用' open64(「/ devices/pseudo/dtrace @ 0:helper」,O_RDWR)= 3'。聽起來像是一個線索:-) – pushy

1

你可以試試最新的java 6更新(6u27)。

+0

這不太可能解決這個問題。使Solaris更新庫修補程序(特別是C++運行庫修補程序)將是更好的方法。 – jlliagre