jvm fastdebug

背景

 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

1.$ axel -n 10 http://download.java.net/jdk6/6u25/promoted/b01/binaries/jdk-6u25-ea-bin-b01-linux-i586-debug-27_jan_2011.jar
2.$ chmod a+x *.jar
3.$ 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  

编译:

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

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

 

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

环境变量设置脚本

1.#!/bin/sh
2.
3.BASE=/usr/local/program/fastdebug
4.JAVA_HOME="$BASE/jdk1.6.0_25"
5.export LD_LIBRARY_PATH="$BASE/hsdis-i386.so:$LD_LIBRARY_PATH"
6.
7.PATH=$JAVA_HOME/bin:$PATH

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

1.$ .  fastdebug.sh  

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

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

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

最后体验一下

时间: 2024-12-09 11:15:49

jvm fastdebug的相关文章

编绎调试HotSpot JVM及在Eclipse里调试

编绎整个OpenJDK要很久,而且有很多东西是不需要的.研究HotSpot的话,其实只要下HotSpot部分的代码就可以了. 下面简单记录下编绎调试HotSpot一些步骤. 一.编绎 进入hotsopt的make目录下: cd code/cpp/openjdk/hotspot/make/ 用make help可以看到有很多有用的信息.当然查看Makefile文件,里面也有很多有用的注释. make help会输出当前的一些环境变量的设置,如果不对,自然编绎不过去. 设置环境变量: unset J

jvm执行流程(static代码块和初始化快和父类子类执行过程)

大家猜想一下,结果会是什么? 为什么会是这样呢? 1.jvm加载StaticBlock的main方法前,要看SubClass中是否有静态的变量和语句,如果有,先给这些静态的变量分配存储空间和执行静态语句(不是静态方法),且由于SubClass的父类中也有静态的变量,根据继承的特性,则先执行父类Parent的静态数据的初始化,然会执行子类的静态数据的初始化. 2.执行main方法中的new StaticBlock(); 语句,进行Parent的类的实例化因为Parent的静态数据已经实例化,并且在

JVM调优总结(十)-调优方法

JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪.详细说明参考这里 JProfiler:商业软件,需要付费.功能强大.详细说明参考这里 VisualVM:JDK自带,功能强大,与JProfiler类似.推荐. 如何调优 观察内存释放情况.集合类检查.对象树 上面这些调优工具都提供了强大的功能,但是总的来说一般分为以下几类功能 堆信息查看 可查看堆空间大小分配(年轻代

从JVM并发看CPU内存指令重排序(Memory Reordering)

这两天,我拜读了 Dennis Byrne 写的一片博文Memory Barriers and JVM Concurrency (中译文内存屏障与JVM并发). 文中提到: 对主存的一次访问一般花费硬件的数百次时钟周期.处理器通过缓存(caching)能够从数量级上降低内存延迟的成本这些缓存为了性能重新排列待定内存操作的顺序.也就是说,程序的读写操作不一定会按照它要求处理器的顺序执行. 这段话是作者对内存屏障重要性的定义.通过cache降低内存延迟,这句话很好理解.但后面那句"为了性能重排序内存

JVM的重排序

感谢同事[沐剑]的投稿 重排序通常是编译器或运行时环境为了优化程序性能而采取的对指令进行重新排序执行的一种手段.重排序分为两类:编译期重排序和运行期重排序,分别对应编译时和运行时环境. 在并发程序中,程序员会特别关注不同进程或线程之间的数据同步,特别是多个线程同时修改同一变量时,必须采取可靠的同步或其它措施保障数据被正确地修改,这里的一条重要原则是:不要假设指令执行的顺序,你无法预知不同线程之间的指令会以何种顺序执行. 但是在单线程程序中,通常我们容易假设指令是顺序执行的,否则可以想象程序会发生

Java VisualVM远程监控JVM

   VisualVM是一个以监控.显示本地或者远程服务器JVM工作情况,进行性能调优的工具.借助VisualVM,我们可以实现对JVM内存各个子池.CPU.垃圾收集器等方面进行监控,从而发现程序代码中潜在的泄露点和配置问题. 远程监控Linux JVM有两种连接方式: CentOS6.5安装:yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel Ubuntu12.04安装:sudo apt-get install java-7-open

JVM垃圾回收描述

垃圾回收分多级,0级为全部(Full)的垃圾回收,会回收OLD段中的垃圾:1级或以上为部分垃圾回收,只会回收Young中的垃圾,内存溢出通常发生于OLD段或Perm段垃圾回收后,仍然无内存空间容纳新的Java对象的情况. 当一个URL被访问时,内存申请过程如下: JVM会试图为相关Java对象在Eden中初始化一块内存区域 当Eden空间足够时,内存申请结束.否则到下一步 JVM试图释放在Eden中所有不活跃的对象(这属于1或更高级的垃圾回收):释放后若Eden空间仍然不足以放入新对象,则试图将

使用XMLBean时JVM异常问题的解决

xml|解决|问题 在程序中有需要操作XML的地方,我个人比较喜欢使用XMLBean .为此,我的Eclipse项目列表里面长期都有一个XMLBean工程,用来随时生成Schema.jar(XMLBean).不过今天我把我的经过本地测试的XMLBean部署到一个Server上的Weblogic后,当调用该XMLBean时,居然把jvm搞挂了...Log: An unexpected exception has been detected in native code outside the VM

phpStorm打开提示 failed to create JVM 的解决办法

phpStorm 软件打开运行提示 failed to create JVM的解决办法. 修改文件 D:\Program Files (x86)\JetBrains\PhpStorm 7.1.3\bin\PhpStorm.exe.vmoptions 把内存值改成标准值,文件全部内容如下: -server -Xms128m -Xmx512m -XX:MaxPermSize=250m -XX:ReservedCodeCacheSize=64m -ea -Dsun.io.useCanonCaches=