`
agapple
  • 浏览: 1583393 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jvm fastdebug

    博客分类:
  • java
阅读更多

背景

 RednaxelaFX 写道

 

agapple 写道
还有一个问题,就是在验证一些逃逸优化时,有些jvm参数用不了,比如-XX:printInlining,-XX:printAssembly,jdk用的是1.6.11和jdk1.6.18
 

-XX:+PrintInlining在product build的Sun JDK上可以是可以用,但什么也显示不出来。要在debug build(debug或者fastdebug)上才有意义。

-XX:PrintAssembly的使用请参考这篇文章:JVM 反汇编动态运行代码

简单来说,如果在声明那些VM参数的地方,写着是product、product_pd、diagnostic或者manageable的,那就是在平时用的product build里可以用的。其它都至少得在fastdebug build里才可以用。

 

jdk fastdebug版本说明:http://blogs.oracle.com/kto/entry/mustang_jdk_6_0_fastdebug

jvm会有product build , debug build , fastdebug build类型的版本,

 

下载&安装

fastdebug版本下载: http://download.java.net/jdk6/6u25/promoted/b01/index.html

 

找到自己合适的系统的安装包,我选择的是jdk-6u25-ea-bin-b01-linux-i586-debug-27_jan_2011.jar

$ axel -n 10 http://download.java.net/jdk6/6u25/promoted/b01/binaries/jdk-6u25-ea-bin-b01-linux-i586-debug-27_jan_2011.jar
$ chmod a+x *.jar
$ java -jar jdk-6u25-ea-bin-b01-linux-i586-debug-27_jan_2011.jar

说明:

1.  axel是一个多线程下载器,下载速度比wget要快很多。

2.  下载的包为一个自解压的包,运行java -jar后,通过GUI就可以选择解压的最终目录,出来的也就是fastdebug版本

 

binutils: http://directory.fsf.org/project/binutils/

 

下载:http://ftp.gnu.org/gnu/binutils/binutils-2.20.1.tar.bz2  

编译:

 

./configure --prefix=/usr/local/program/binutils
make ; make install

hsdis下载: http://kenai.com/projects/base-hsdis/downloads/download/linux-hsdis-i386.so

 

最后我选择了一个编译好的linux 386的so包,省去了一些编译的过程。

环境变量设置脚本

 

#!/bin/sh

BASE=/usr/local/program/fastdebug
JAVA_HOME="$BASE/jdk1.6.0_25"
export LD_LIBRARY_PATH="$BASE/hsdis-i386.so:$LD_LIBRARY_PATH"

PATH=$JAVA_HOME/bin:$PATH

 

需要切换到fastdebug的jvm时,只需运行下该脚本。

 

$ .  fastdebug.sh

注意点号和fastdebug.sh之间有空格,直接在当前进程中运行该shell,生成的环境变量就会在当前的bash窗口中生效。

测试过程中,通过设置LD_LIBRARY_PATH貌似没用,最后无奈选择了copy到对应jre的lib库下

ln -s /usr/local/program/fastdebug/hsdis-i386.so /usr/local/program/fastdebug/jdk1.6.0_25/jre/lib/i386/client/
ln -s /usr/local/program/fastdebug/hsdis-i386.so /usr/local/program/fastdebug/jdk1.6.0_25/jre/lib/i386/server/

最后体验一下

参考文档

  • 大小: 221.5 KB
分享到:
评论
5 楼 googya 2011-12-29  
如果是64位的机器,是不是要用amd64?在mac下添加到jre/lib/amd64/server下面么???
我配置了半天还是不成功

java  -XX:+PrintAssembly -Xcomp -XX:CompileCommand=dontinline,Bar.sum -XX:CompileCommand=compileonly,Bar.sum Bar 
VM option '+PrintAssembly'
VM option 'CompileCommand=dontinline,Bar.sum'
VM option 'CompileCommand=compileonly,Bar.sum'
OpenJDK Server VM warning: PrintAssembly is enabled; turning on DebugNonSafepoints to gain additional output
CompilerOracle: dontinline Bar.sum
CompilerOracle: compileonly Bar.sum
Could not load hsdis-i386.dylib; library not loadable; PrintAssembly is disabled
PrintAssembly request changed to PrintOptoAssembly
{method} 
 - klass: {other class}
 - this oop:          0x177d2cd8
 - method holder:     'Bar'
 - constants:         0x177d2ae8 constant pool [28] for 'Bar' cache=0x177d3060
 - access:            0x81000001  public 
 - name:              'sum'
 - signature:         '(I)I'
 - max stack:         2
 - max locals:        2
 - size of params:    2
 - method size:       20
 - vtable index:      5
 - i2i entry:         0x0380b840
 - adapter:           0x0325c89c
 - compiled entry     0x038aa8cb
 - code size:         11
 - code start:        0x177d2cc8
 - code end (excl):   0x177d2cd3
 - method data:       0x177d32f0
 - checked ex length: 0
 - linenumber start:  0x177d2cd3


4 楼 lucane 2011-05-25  
难道我用这个-XX:PrintAssembly参数跑不出来自己的类的相关日志也是没有用fastdebug版本的jdk的原因?
http://hllvm.group.iteye.com/group/blog/1040666
3 楼 RednaxelaFX 2011-05-24  
agapple 写道
已经加入了高级虚拟机圈子,下次还要多多交流和指点哈

多谢多谢 ^_^
2 楼 agapple 2011-05-24  
RednaxelaFX 写道
这篇能编辑一下同步发到高级语言虚拟机圈子么?在编辑界面的底下勾选一下就可以了。应该会有不少人感兴趣的。


已经加入了高级虚拟机圈子,下次还要多多交流和指点哈
1 楼 RednaxelaFX 2011-05-24  
这篇能编辑一下同步发到高级语言虚拟机圈子么?在编辑界面的底下勾选一下就可以了。应该会有不少人感兴趣的。

相关推荐

Global site tag (gtag.js) - Google Analytics