JDK6u25跑Eclipse变快了?——多层编译模式

57 篇文章 0 订阅
26 篇文章 0 订阅
先前只在几个测试用的环境里装了JDK 6 update 25,没在自己的开发机上装。刚才正好试一个东西的时候装上了,就顺手把跑Eclipse的JVM设到了JDK6u25上。
-vm
D:/sdk/jdk1.6.0_25/bin/javaw.exe
-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-product
org.eclipse.epp.package.jee.product
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
-server
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
-javaagent:lombok.jar
-Xbootclasspath/a:lombok.jar
-XX:+TieredCompilation

留意几个参数:

-vm
这个用来指定用哪个JDK来启动Eclipse。指定到我的JDK6u25安装目录了。

-vmargs
这个后面的配置用来传给JVM设定启动参数。其中
-javaagent:lombok.jar
-Xbootclasspath/a:lombok.jar

这俩是因为我装了[url=http://projectlombok.org/]Project Lombok[/url]插件。对它没兴趣的可以忽略这两项。

重要的是这两个配置:
-server
-XX:+TieredCompilation

前者是指定使用HotSpot Server VM。后者则是打开“[b]多层编译[/b]”(tiered compilation)。在该模式下,代码会先被解释器执行,积累到足够热度的时候由client compiler(C1)编译,然后继续积累热度到一定程度会进一步被server compiler(C2)重新以更高的优化程度编译。
这个模式在JDK6的HotSpot里很早就存在了,但去年下半年有大幅度翻新,相关代码随着JDK6u25发布,现在已经比较稳定了。相关的[url=http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/d5d065957597]changeset在这里[/url]。
在JDK 8 build 23里,x86与SPARC上的HotSpot Server VM已经将多层编译模式设为默认执行模式。相关changeset:
7116795: Tiered: enable by default for server: [url]http://hg.openjdk.java.net/hsx/hotspot-main/hotspot/rev/97825a4f7369[/url]

理论上这会提高启动速度和平均速度,顶峰速度也可能有一定提高——跟client VM比的话是肯定有提高,跟server VM比的话是应该还是差不多。
现实是:我用了这个模式之后Eclipse的启动感觉是变快了……不知道是不是我的错觉? :wink:
K神说他试了觉得启动速度没差别。嗯这应该怎么测比较好?

大家也试试看如何?

================================================

2011-12-01更新:在这个改动生效后,HotSpot Server VM就默认开启多层编译了:
[url]http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2011-November/006786.html[/url]
changeset: [url]http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/97825a4f7369[/url]

2012-04-07更新:结果在JDK7u4里多层编译又被设回到默认不打开了:
[url=http://bugs.sun.com/view_bug.do?bug_id=7159766]7159766: Tiered compilation causes performance regressions[/url]

2013-07-27更新:然后在JDK8的首个发布版里终于又要把TieredCompilation设到默认开启了:
[url=http://bugs.sun.com/view_bug.do?bug_id=8008938]JDK-8008938 : TieredCompilation should be default[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值