该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-04-27
最后修改:2011-04-27
学习了,谢谢IcyFenix
怎么最近的牛都夜间活动了。。 继续关注VM~ |
|
返回顶楼 | |
发表时间:2011-04-27
peterwei 写道 shaomeng95 写道 楼主太猛了,我一直想搞清楚JVM的东西,请问你都是从哪里学来的,给小弟点指引吧
网上很多资料,看你想不想学。深入jvm搞清楚了,才能和这帮人扯。我是暂时没精力搞这些东西,只能粗粗的了解,以免以后被bs。 我有学习过很多JVM的知识,只是很多的知识点零散,甚至大家吵来吵去都不知道谁说的是对的,呵呵 |
|
返回顶楼 | |
发表时间:2011-04-27
目录很吸引人的。。。看page感觉内容是不是少了点?
|
|
返回顶楼 | |
发表时间:2011-04-27
LSQ6063 写道 目录很吸引人的。。。看page感觉内容是不是少了点?
不好意思,写错了 |
|
返回顶楼 | |
发表时间:2011-04-27
真的很期待!
|
|
返回顶楼 | |
发表时间:2011-04-27
IcyFenix 写道 LS这个夜猫子……
别说我,你不是比我还晚么… IcyFenix 写道 关于这个例子,我首先找一个替罪羊出来:Jeroen Borgers的《Do Java 6 threading optimizations actually work?》,例子来源于此,就用来理解原理是没有什么问题的,虽然理想与现实总是有点差距。
嗯啊我知道例子的源头在哪里。事实上我最初看到JDK6里关于锁削除/偏向锁的宣传例子就是关于“有了这些优化之后,StringBuilder与StringBuffer在许多场景里性能就一样了”。但这着实不是个好例子,因为在实际的实现上使用了具体的代码来举例,那好歹要确认它真的是能行的。不然不就是忽悠了嘛… 所以找替罪羊是不对的哦 >_< 读过的资料自己验证过了才会成为自己的知识。 IcyFenix 写道 RednaxelaFX 写道 可以看到输出了么?通过强制调整JIT编译器的一些配置项,这例子的锁削除优化就真的成立了。猜猜看为什么?
(提示:再多开几个别的参数就能很明显的看出来 ) “别的参数”我加了这2个: -XX:+PrintCompilation -XX:+PrintInlining 嗯bingo,我也是用这两个参数。你已经掌握窍门了 XD 于是你知道前后两版本的差异的原因了么? (我还用了别的一些参数,例如-XX:+PrintAssembly和-XX:+PrintOptoAssembly,读生成的代码来确认真的是在Foo.concatString()里削除了锁。想知道详细的话回头有空了我可以发帖。) IcyFenix 写道 另,抗议两个windows版6u25 fastdebug坑爹的事情,一个是:
D:\Develop\jdk1.6.0_25_fastdebug\bin>java -XX:+PrintEliminateLocks TestLockElision VM option '+PrintEliminateLocks' Unrecognized VM option '+PrintEliminateLocks' Could not create the Java virtual machine. D:\Develop\jdk1.6.0_25_fastdebug\bin>java -version java version "1.6.0_25-ea-fastdebug" Java(TM) SE Runtime Environment (build 1.6.0_25-ea-fastdebug-b03) Java HotSpot(TM) Client VM (build 20.0-b10-fastdebug, mixed mode) 你可以用跟我用的一样的版本嘛…JDK 6 update 25 build 01 当然,那不是本质问题。真正的问题是:你用的是client VM啊…… HotSpot VM只在server VM里实现了锁削除的优化,相关的参数也是只有server VM才有的。 所以你必须要加上-server因为你在Windows上默认选择了client VM…我在Linux上不用加-server是因为x64 Linux上的JDK里只有server VM。 IcyFenix 写道 另外一个是你给的参数那个单引号= =#,linux和win版有这样的差异么?我试了jdk7和6u25两个版的都不认加了引号的,必须去掉才行,问题不大,不过为了避免别的同学做试验产生困扰,稍微提一下。
引用 -XX:CompileCommand='compileonly,Foo.*' -XX:CompileCommand='compileonly,java/lang/StringBuffer.*' 是啊,Windows上单引号就不对了。所以我这不是把我执行的环境说清楚了嘛,其它环境的细微调整就看自己了 XD |
|
返回顶楼 | |
发表时间:2011-04-27
-XX:+PrintAssembly和-XX:+PrintOptoAssembly生成的代码撒迦在HLLVM上讲解一下吧。Java号称高级语言,很多问题还是必须要依赖C++和汇编的基础@_@,这方面与你的差距是非常本质的。
|
|
返回顶楼 | |
发表时间:2011-04-27
来点服务器风就好了!个人觉得这个大家都需要!做web的都离不开服务器!
|
|
返回顶楼 | |
发表时间:2011-04-27
虽然研究不深,但是看楼主的目录东西还是多,楼主精神可嘉
|
|
返回顶楼 | |
发表时间:2011-04-27
The Hotspot Java Virtual Machine
Paul Hohensee paul.hohensee@sun.com Senior Staff Engineer, Hotspot JVM, Java SE Sun Microsystems 跟上述这篇文档有不少重叠的内容 |
|
返回顶楼 | |