HotSpot 源代码编译

编译环境

  1. Windows10,VMware15,Ubuntu18.04, 虚拟环境。
  2. PC机,内存32G,CPU 16 核心,I7八代。
  3. Ubuntu18.04 虚拟机。

环境准备

  1. 安装Boot JDK,下载Linux版Oracle JDK8,解压安装到/usr/lib下, 执行
gedit ~/.bashrc 

文件末尾追加如下

export JAVA_HOME=/usr/lib/jdk/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=.:${JAVA_HOME}/bin:$PATH

使配置生效

source ~/.bashrc
  1. 下载 OpenJDK9
    由于官方下载缓慢,直接从gitee上下载OpenJDK9分支,拷贝下载的openjdk到新建的jdk目录下解压,进入解压后的openjdk目录

编译JVM

1.执行如下命令根据提示下载缺失的库

bash ./configure
bash configure --with-debug-level=slowdebug
bash configure --disable-warnings-as-errors --with-debug-level=slowdebug --with-native-debug-symbols=internal

2.开始编译

make

出现错误

Error: No CONF given, but more than one configuration found.
Available configurations in /home/wly/dev/jdk/build:
* linux-x86_64-normal-server-slowdebug
* linux-x86_64-normal-server-release
Please retry building with CONF=<config pattern> (or SPEC=<spec file>).

选择一个配置后再次编译

make CONF=linux-x86_64-normal-server-slowdebug

编译成功,十几分钟就好了

Stopping sjavac server
Finished building target 'default (exploded-image)' in configuration 'linux-x86_64-normal-server-slowdebug'

验证JVM

1.创建javac和java命令链接

ln -s /home/charlie/jdk/openjdk/build/linux-x86_64-normal-server-slowdebug/jdk/bin/javac javac9
ln -s /home/charlie/jdk/openjdk/build/linux-x86_64-normal-server-slowdebug/jdk/bin/java java9
  1. 创建Hello.java程序
public class Hello{
    public static void main(String[] args){
        System.out.println("hello world !");
    }
}

3.执行 javac 命令生成字节码

javac Hello.java

4.执行 java 命令 执行程序

java Hello

结果如下:
在这里插入图片描述

调试HotSpot

  1. 现在Linux版本Clion IDEA
  2. 打开IDEA, 选择 New CMake Project from Sources,选择已编译好的hotspot目录,打开

在这里插入图片描述
3. 配置调试环境(1. Edit Configuration 2.选择java 3.BeforeLaunch 去掉Build )

在这里插入图片描述
4. 断点调试

打开allocation.cpp 设置如图断点,点击绿色的bug虫。

在这里插入图片描述

总结

JVM是Java的核心,JVM屏蔽了底层硬件细节,为Java跨平台提供了可能。JVM是一个庞大的项目,里面包含了复杂的实现细节,JVM构建了代码执行引擎,以屏蔽各硬件平台差异。JVM包含了许多优秀的设计思想和实现,包括垃圾回收,JIT, AOT, OopKlass对象模型,执行引擎,字节码机制,类加载机制栈式指令集,字节码解释器,模版解释器等等,得益于其优秀的设计和不断地与时俱进,Java平台一直受到开发者的青睐。今天是JVM系列的开篇,JVM的优秀让人兴奋。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值