jvm优化参数整理(持续补充)背景前段时间一直在关注一些牛人的blog,主要的关注点在一些性能优化上,一些细小
jvm优化参数整理(持续补充)
背景
前段时间一直在关注一些牛人的blog,主要的关注点在一些性能优化上,一些细小的jvm参数优化上。以前这一块一直是自己的弱项,把这段时间看的内容做一个记录。
过程
先认识一下几位大牛的http://rednaxelafx.iteye.com?,?http://kenwublog.com/, 貌似都是taobao中间件团队的,blog文章都写的比较不错。
?
JIT优化
JIT全程: (Just-in-time) , sun的一些资料文档: Just-In-Time Java Compiler??, ??http://java.sun.com/developer/onlineTraining/Programming/JDCBook/perf2.html#jit
主要的内容:
Hot Spot Detection ?(热点检测)Native code & Method Inlining ?(本地代码&方法内联,根c++的内联inline方法有点类似)Dynamic Deoptimization (去优化,可以针对代码进行重复的优化/去优化的动作)
提到jit,必须得看一下jvm的解释模式/编译模式。
?
DoEscapeAnalysis在早期JDK6里不是默认开启的。到update 21还是23才默认开了。
可以参考一些环境里HotSpot VM参数的默认值。
自己用-XX:+PrintFlagsFinal来试试看就能知道自己的版本的默认值是什么了。
<< 不过这个参数也是在比较新的JDK6上才加的。比较老的版本上应该是用不了吧。试了一下,是在JDK 6 update 21才开始支持的,前面的版本都不行。
DoEscapeAnalysis在早期JDK6里不是默认开启的。到update 21还是23才默认开了。
可以参考一些环境里HotSpot VM参数的默认值。
自己用-XX:+PrintFlagsFinal来试试看就能知道自己的版本的默认值是什么了。
<< 不过这个参数也是在比较新的JDK6上才加的。比较老的版本上应该是用不了吧。试了一下,是在JDK 6 update 21才开始支持的,前面的版本都不行。
很悲剧公司的jdk用的是jdk 6 update 18,上次想迁移到jdk 6 update 23时,发现了jps的一个bug:因为我们用了jetty的原因,导致jps不能用了。所以这事被hold了,不过貌似最近的jdk 6 update 25已经fix该问题,估计最近会有动作
在jdk update 20这个版本下,-XX:+UseCompressedOops参数居然不支持,就让我有点困惑
-XX:+PrintFlagsFinal这个参数好啊,以后可以试试,多谢撒迦的提携 3 楼 RednaxelaFX 2011-05-19 agapple 写道很悲剧公司的jdk用的是jdk 6 update 18,上次想迁移到jdk 6 update 23时,发现了jps的一个bug:因为我们用了jetty的原因,导致jps不能用了。所以这事被hold了,不过貌似最近的jdk 6 update 25已经fix该问题,估计最近会有动作
在jdk update 20这个版本下,-XX:+UseCompressedOops参数居然不支持,就让我有点困惑
UseCompressedOops在JDK 6 update 18-20都不支持吧。有bug没修好所以把这个参数强制禁用了。
最近在6u23上也遇到了疑似是跟压缩指针相关的VM crash。所以让遇到crash的应用暂时关闭掉这个功能了。麻烦的就是没有合适的环境再现出这个问题。要在线上跑十来个小时它才偶尔的crash了。
印象中6u18里有个啥很糟糕的问题所以B2B那边是不用这个版本(而退回到6u17)的。貌似是校长说的? 4 楼 agapple 2011-05-19 RednaxelaFX 写道agapple 写道很悲剧公司的jdk用的是jdk 6 update 18,上次想迁移到jdk 6 update 23时,发现了jps的一个bug:因为我们用了jetty的原因,导致jps不能用了。所以这事被hold了,不过貌似最近的jdk 6 update 25已经fix该问题,估计最近会有动作
在jdk update 20这个版本下,-XX:+UseCompressedOops参数居然不支持,就让我有点困惑
UseCompressedOops在JDK 6 update 18-20都不支持吧。有bug没修好所以把这个参数强制禁用了。
最近在6u23上也遇到了疑似是跟压缩指针相关的VM crash。所以让遇到crash的应用暂时关闭掉这个功能了。麻烦的就是没有合适的环境再现出这个问题。要在线上跑十来个小时它才偶尔的crash了。
印象中6u18里有个啥很糟糕的问题所以B2B那边是不用这个版本(而退回到6u17)的。貌似是校长说的?
不是把,最近我们刚在jdk update 18上加上了UseCompressedOops参数,校长没提bug的事
现在jdk update 18遇到了几次jvm crash,主要归为两类: velocity jit优化导致crash,另一个就是GCTaskThread崩溃(一个现象就是eden区100%) 5 楼 RednaxelaFX 2011-05-19 agapple 写道不是把,最近我们刚在jdk update 18上加上了UseCompressedOops参数,校长没提bug的事
现在jdk update 18遇到了几次jvm crash,主要归为两类: velocity jit优化导致crash,另一个就是GCTaskThread崩溃(一个现象就是eden区100%)
sorry我把两个参数记混了。压缩指针是一直没有禁用的。在JDK 6u18-20里禁用的是 DoEscapeAnalysis
引用Note that Escape analysis-based optimization ( -XX:+DoEscapeAnalysis) is disabled in 6u18. This option will be restored in a future Java SE 6 update.