我测的是jdk1.6_update21,下面是拿eclipse启动作为测试的例子,使用的是同一个eclipse,2次测试就在eclipse.ini改了jvm路径,其他不变。已经反复启动过多次确保避免操作系统磁盘缓存的因素。
测1.6时已经把-XX:-UseSplitVerifier关闭掉1.6的新类型推断(不过这个开着关着没啥影响,eclipse又不是用1.6编的),根据-XX:+TraceClassLoading的输出,使用两个jdk加载的类是一致的,两个jdk测试的时候类共享都是auto的(默认值:-Xshare:auto),从TraceClassLoading的输出也能看出类共享是起作用的。解释不了为何两者有100%左右的性能差距?我机器上测试多次都是如此,不知道是我的机器还是普遍现象。是统计口径两者不一至,还是性能确实有差距?
C:/Users/Thinkpad>jps
3552
6372 org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
6900 Jps
C:/Users/Thinkpad>jstat -class 6372
Loaded Bytes Unloaded Bytes Time
7917 10190.3 0 0.0 8.18
C:/Users/Thinkpad>jps
3552
7272 Jps
7216 org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
C:/Users/Thinkpad>jstat -class 7216
Loaded Bytes Unloaded Bytes Time
7902 9691.2 3 2.6 4.34
本文转自www.35java.com