Solaris 10中的Java启动速度很慢

问题描述:

由于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 

任何想法?

这是在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

也许Java 6安装在网络驱动器上。你可以尝试

df `which java` 
+0

不,不是网络驱动器,两个jdk都在同一个驱动器上运行。 – pushy

你可以尝试

truss java -version 

,看它是否等待很长一段时间在一个特定的系统调用。

+1

好主意,最后一行等待很长时间:'open64(“/ dev/dtrace/helper”,O_RDWR)\t \t = 3'当我在Java5上做一个桁架时,这个调用不会出现,而是调用' open64(“/ devices/pseudo/dtrace @ 0:helper”,O_RDWR)= 3'。听起来像是一个线索:-) – pushy

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

+0

这不太可能解决这个问题。使Solaris更新库修补程序(特别是C++运行库修补程序)将是更好的方法。 – jlliagre