我打算认真学习一下JVM,在网上搜索了一番,发现有人配置从成功用NetBeans调试Hotspot JVM.
重点参考文章:
- http://weblogs.java.net/blog/simonis/archive/2008/01/hotspot_develop_1.html
- http://blog.csdn.net/fancyerii/article/details/7007503
其中后者参考了前者,由于这2篇文章都有些过时,好多bug都已修正,现在再去搞起来方便多了。
- 安装一个linux环境,我装了ubuntu11.04
- 确保安装openjdk6
- 下载openjdk7源码,http://download.java.net/openjdk/jdk7/ 并解压到/home/jack/Project/openjdk7(目录名只是举例)
- 直接用make命令编译jdk,编辑如下的一个shell脚本,执行。
cd /home/jack/Project/openjdk7
LANG=C \
ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk \
ALLOW_DOWNLOADS=true HOTSPOT_BUILD_JOBS=5 \
ALT_PARALLEL_COMPILE_JOBS=5 \
USE_PRECOMPILED_HEADER=true \
SKIP_DEBUG_BUILD=false \
SKIP_FASTDEBUG_BUILD=true \
DEBUG_NAME=debug \
ALT_OUTPUTDIR=/home/jack/Project/openjdk7/build/openjdk_full_debug \
make 2>&1 | tee /home/jack/Project/openjdk7/build/openjdk_full_debug.log
其中的ALLOW_DOWNLOADS参数确保我们无须手工下载相关依赖组件。
- 上面成功编译了整个jdk,这里尝试编译jvm,即hotspot部分:
cd /home/jack/Project/openjdk7/hotspot/make
LANG=C \
ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk \
HOTSPOT_BUILD_JOBS=5 \
ALT_OUTPUTDIR=/home/jack/Project/openjdk7/build/hotspot_debug \
make jvmg 2>&1 | tee /home/jack/Project/openjdk7/build/hotspot_debug.log
完了以后,可以在/home/jack/Project/openjdk7/build/hotspot_debug/linux_i486_compiler2/jvmg这个目录里找到gamma这个文件,这个是jvm的可执行文件。(注这一步只是试验,可选)
- 下载最新版Netbeans,注意选择支持c++的那个版本
- 用Netneans新建C/C++项目,选择从已有代码新建,项目目录为/home/jack/Project/openjdk7/hotspot/,选择定制,找到make目录下的Makefile,build命令为make jvmg, 然后就直到finish。
- 配置run的参数,比如"{OUTPUT_PATH}" -XX:StopInterpreterAt=1 -version(这个output_path必须配为/home/jack/Project/openjdk7/build/hotspot_debug/linux_i486_compiler2/jvmg/gamma,然后debug就可以了,按住Ctrl点鼠标也能查看C++方法和类型的定义了。
如果有遇到问题的,可以参考文章开头的参考文献。
下一步要看代码了,是GC,解释器,还是并发?
- 大小: 150.5 KB
分享到:
相关推荐
JVM图解-JVM指令-JVM原型图.rar
nginx-upstream-jvm-route 支持nginx版本1.15 解决nginx: [emerg] invalid parameter "srun_id=tomcat1" 问题
bcprov-ext-jdk15on-1.54.jar、bcprov-jdk15on-1.54.jar和ssl-provider-jvm16-0.2.jar附件下载
在jvm-sandbox-repeater基础上提供了更加丰富功能,同时便于线上部署和使用,更多对比参考。 使用场景 你是否遇到过以下的问题? 线上有个用户请求一直不成功,我想在测试环境Debug一下,能帮我复现一下吗? 压测...
java jvm 参数 -Xms -Xmx -Xmn -Xss -
1、java虚拟机的基本介绍。 2、字节码的执行 3、常用的jvm参数配置 4、算法和种类 5、gc参数配置 6、类加载器 7、性能监控工具 8、jvm堆栈分析
JVM基础-超清文字版.pdf 这个是带完整目录书签的文字版本,文本内容可以复制的哦
JVM规范--高手总结 Java相关 1 1.1Java定义 1 1.2Java的开发流程 1 1.3Java运行的原理 2 1.4半编译半解释 3 1.5平台无关性 4 JVM内存模型 4 2.1 JVM规范 5 2.2 Sun JVM 8 2.3 SUN JVM内存管理(优化) 10 2.4 SUN JVM...
赠送jar包:metrics-jvm-3.1.5.jar; 赠送原API文档:metrics-jvm-3.1.5-javadoc.jar; 赠送源代码:metrics-jvm-3.1.5-sources.jar; 赠送Maven依赖信息文件:metrics-jvm-3.1.5.pom; 包含翻译后的API文档:...
此资源有两个文件,含 nginx-upstream-jvm-route 和 nginx 对应版本,都是tar.gz文件。 安装方法网上很多就不写了,亲测可用。 不用担心版本不匹配造成安装失败,再浪费积分去到处下载尝试的烦恼。 此资源有两个文件...
赠送jar包:metrics-jvm-3.1.5.jar; 赠送原API文档:metrics-jvm-3.1.5-javadoc.jar; 赠送源代码:metrics-jvm-3.1.5-sources.jar; 赠送Maven依赖信息文件:metrics-jvm-3.1.5.pom; 包含翻译后的API文档:...
kotlinx-coroutines-io-jvm-0.1.1.jar
本人手打笔记,欢迎来白嫖,学完Jvm 看java代码的眼界就不一样了
jvm-full-gc调优-jvm-full-gc
jvm调优-jvm
NULL 博文链接:https://wensiqun.iteye.com/blog/1125503
JVM实战-JVM类加载机制案例分析
JVM 的运行机制 多线程 JVM 的内存区域 JVM 会创建操作系统的接口创建一个原生线程。JVM 线程和操作系统线程是一一对应的
JVM原理-jvm内存及相关图示
nginx_upstream_jvm_route 是一个 Nginx 的扩展模块,用来实现基于 Cookie 的 Session Sticky 的功能。 安装方法(进入Nginx源码目录): #patch -p0 < /path/to/this/directory/jvm_route.patch # ./configure -...