论坛首页 Java企业应用论坛

遇到个奇怪的现象:jdk1.6的类加载比1.5慢一倍

浏览 12909 次
精华帖 (0) :: 良好帖 (6) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-11-29  
http://wiki.eclipse.org/FAQ_How_do_I_run_Eclipse%3F
0 请登录后投票
   发表时间:2010-11-29  
RednaxelaFX 写道


1.6.0

D:\experiment>jstat -class 2168
Loaded  Bytes  Unloaded  Bytes     Time
  6326  7889.2        0     0.0       2.82

D:\experiment>jstat -class 648
Loaded  Bytes  Unloaded  Bytes     Time
  6325  7888.6        0     0.0       2.69

D:\experiment>jstat -class 3892
Loaded  Bytes  Unloaded  Bytes     Time
  6327  7889.9        0     0.0       2.77


1.6.0_21

D:\experiment>jstat -class 2456
Loaded  Bytes  Unloaded  Bytes     Time
  6293  8024.6        0     0.0       4.00

D:\experiment>jstat -class 3444
Loaded  Bytes  Unloaded  Bytes     Time
  6310  8040.4        0     0.0       3.92

D:\experiment>jstat -class 2024
Loaded  Bytes  Unloaded  Bytes     Time
  6306  8037.7        0     0.0       4.00




嘿嘿,发这个贴的时候就想过能不能把你钓出来。撒迦同学能否查一下这2个版本的差距原因?

还有你这部机器实验数据数据好稳定,我做实验的时候,发生30%的偏差很正常= =#。

我觉得可能那个导致影响的因素:各个JDK中classes.jsa文件或者rt.jar所处的磁盘位置、字节码验证部分是否有改动过、jstat的class load time统计口径是否都一致、jar包的zip算法是否改过、是否受到jar包数字签名的影响……
0 请登录后投票
   发表时间:2010-11-29  
xiaoyu 写道
http://wiki.eclipse.org/FAQ_How_do_I_run_Eclipse%3F


- -# 你这个没有意义啊,不是讨论launcher不认识名字改成oracle之后的jdk的问题。
0 请登录后投票
   发表时间:2010-11-29  
IcyFenix 写道
嘿嘿,发这个贴的时候就想过能不能把你钓出来。撒迦同学能否查一下这2个版本的差距原因?

还有你这部机器实验数据数据好稳定,我做实验的时候,发生30%的偏差很正常= =#。

我觉得可能那个导致影响的因素:各个JDK中classes.jsa文件或者rt.jar所处的磁盘位置、字节码验证部分是否有改动过、jstat的class load time统计口径是否都一致、jar包的zip算法是否改过、是否受到jar包数字签名的影响……

我在跑测试前把一些干扰比较大的程序都关了。虽然还不算很稳定不过大概耗时范围能看出问题就够了。

我跑的测试结果里6u17和6u18之间出现了“断层”。重复交替跑了几次结果还是一样。另外我机器上有两份6u17和6u18,也分别试了下,都跟贴出来的结果差不多。有空我会看看大概是什么地方造成的差异。猜测的话我是没头绪,但确定的是这个差异不是split verifier造成的,原因前面已经提到过了。Eclipse的发行包为了兼容更广泛的范围,所以基本上是用1.5兼容来编译的,出来的Class文件最多就到49.0版本,还不在split verifier的工作范围内。事实上我随便看了几个Eclipse 3.5里的一些JAR包的Class文件,居然有版本号非常低的…就是没看到版本号为50.0的。
JAR包的文件的容器格式是Zip,压缩算法是deflate,这些都已经很久没变过了,也不像是造成问题的地方。
总之我就先不猜测了…如果找到原因再拿来大家讨论讨论看~
0 请登录后投票
   发表时间:2010-11-30   最后修改:2010-11-30
随便说一句:6u18千万别用,是个有严重bug的版本,随机出现崩溃现象。
0 请登录后投票
   发表时间:2010-11-30   最后修改:2010-11-30
我跑了一下,结果貌似和LZ的有点相反

笔记本上: 32位, 2G内存

Linux 2.6.32-22-generic #33-Ubuntu SMP Wed Apr 28 13:27:30 UTC 2010 i686 GNU/Linux

jdk 1.6.0_11
jianghang@jianghang-laptop:/usr/local/program$ jstat -class 9479
Loaded  Bytes  Unloaded  Bytes     Time   
  7879  9862.7        0     0.0       2.63

jianghang@jianghang-laptop:/usr/local/program$ jstat -class 9271
Loaded  Bytes  Unloaded  Bytes     Time   
  7847  9821.7        0     0.0       2.61


jdk 1.5.0_14
jianghang@jianghang-laptop:/usr/local/program$ jstat -class 9585
Loaded  Bytes  Unloaded  Bytes     Time   
  7821  9691.6        0     0.0       3.37
jianghang@jianghang-laptop:/usr/local/program$ jps
9769 Jps
9693 org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
jianghang@jianghang-laptop:/usr/local/program$ jstat -class 9693
Loaded  Bytes  Unloaded  Bytes     Time   
  7824  9694.1        0     0.0       3.30



服务器跑了一下eclipse: 64位
Linux 2.6.18-131.el5.customxen #1 SMP Tue Sep 15 15:46:11 CST 2009 x86_64 x86_64 x86_64 GNU/Linux

jdk1.6.0_12
[ljh@ccbu-156-49 work]$ jstat -class 19849
Loaded  Bytes  Unloaded  Bytes     Time   
  7023 16497.0        0     0.0       1.82

[ljh@ccbu-156-49 work]$ jstat -class 20097
Loaded  Bytes  Unloaded  Bytes     Time   
  7023 16497.0        0     0.0       1.82


1.5.0_17
[ljh@ccbu-156-49 work]$ jstat -class 18825
Loaded  Bytes  Unloaded  Bytes     Time   
  6974 16073.1        0     0.0       2.07

[ljh@ccbu-156-49 work]$ jstat -class 18952
Loaded  Bytes  Unloaded  Bytes     Time   
  6971 16068.8        0     0.0       2.06


jdk1.6.0_18
[ljh@ccbu-156-49 work]$ jstat -class 20550
Loaded  Bytes  Unloaded  Bytes     Time   
  6995 16576.5        0     0.0       5.89

[ljh@ccbu-156-49 work]$ jstat -class 20675
Loaded  Bytes  Unloaded  Bytes     Time   
  6996 16578.0        0     0.0       5.78


最后跑了一个java6 build18的,发现差好多,java6 11,12版本比java5稍微好点。
0 请登录后投票
   发表时间:2010-12-02  
呵呵,这些细节,新手就很少关注啦,能用就行
0 请登录后投票
   发表时间:2010-12-02  
sam_kee 写道
呵呵,这些细节,新手就很少关注啦,能用就行

18就是属于不能用的版本,随机的崩溃会让你以为自己写的程序有问题。
0 请登录后投票
   发表时间:2010-12-02  
icewubin 写道
sam_kee 写道
呵呵,这些细节,新手就很少关注啦,能用就行

18就是属于不能用的版本,随机的崩溃会让你以为自己写的程序有问题。


个体差异???
我18跑的好好的
0 请登录后投票
   发表时间:2010-12-02   最后修改:2010-12-02
qianhd 写道
icewubin 写道
sam_kee 写道
呵呵,这些细节,新手就很少关注啦,能用就行

18就是属于不能用的版本,随机的崩溃会让你以为自己写的程序有问题。


个体差异???
我18跑的好好的

随机当然是讲概率的,我们这边有一次机房搬迁,正好部署了100台左右的18,平均每周有一台崩溃,代码不变,换成14版本,一切正常,后来把所有的18全部换成了14,就再也没有出现异常的崩溃。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics