news 2026/4/21 23:49:28

Java虚拟机精讲【1.4】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java虚拟机精讲【1.4】
1.5.6 执行单独HotSpot的编译

其 实编 译 OpenJDK 真 正有 吸引 力 的地 方是 在 HotSpot 的编 译部 分 ,而 非整 个OpenJDK,所以如果你只是想在成功编译好 HotSpot 后进行 Debug,则可以在 OpenJDK 源代码根目录下的/hotspot/make 目录中使用 Make 命令执行 Makefile 脚本即可。当然编译HotSpot 和编译 OpenJDK 类似,都需要在编译时设置 LANG 和 ALT_BOOTDIR 这 2 个环境变量,如下所示:

代码 1-4 设置编译 HotSpot 所需的环境变量参数 #设定语言选项 export LANG=C #定义 Bootstrap JDK 的路径 export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk #编译后的存储路径 export ALT_OUTPUTDIR=/home/johngao/openjdk7/build-jvm make jvmg jvmg1 2>&1 | tee /home/johngao/openjdk7/build-log/hotspot.log

无论是编译整个 OpenJDK 还是只编译 HotSpot,需要设置的环境变量始终只有两个是必需的,所以笔者在编译 HotSpot 时,只设置了 LANG 和 ALT_BOOTDIR 以及指定编译后存储路径的 ALT_OUTPUTDIR 环境变量。

在/hotspot/make 目录下的 Makefile 脚本中,定义了 HotSpot 的编译目标类型,其中主要包括了 product、 optimized、 fastdebug 和 debug 等 4 种级别,如下所示:

代码 1-5 Makefile 脚本中 HotSpot 的编译目标类型 # Typical C1/C2 targets made available with this Makefile C1_VM_TARGETS=product1 fastdebug1 optimized1 jvmg1 C2_VM_TARGETS=product fastdebug optimized jvmg ZERO_VM_TARGETS=productzero fastdebugzero optimizedzero jvmgzero SHARK_VM_TARGETS=productshark fastdebugshark optimizedshark jvmgshark COMMON_VM_PRODUCT_TARGETS=product product1 docs export_product COMMON_VM_FASTDEBUG_TARGETS=fastdebug fastdebug1 docs export_fastdebug COMMON_VM_DEBUG_TARGETS=jvmg jvmg1 docs export_debug # JDK directory list JDK_DIRS=bin include jre lib demo all: all_product all_fastdebug ifdef BUILD_CLIENT_ONLY all_product: product1 docs export_product all_fastdebug: fastdebug1 docs export_fastdebug all_debug: jvmg1 docs export_debug else ifeq ($(MACOSX_UNIVERSAL),true) all_product: universal_product all_fastdebug: universal_fastdebug all_debug: universal_debug else all_product: $(COMMON_VM_PRODUCT_TARGETS) all_fastdebug: $(COMMON_VM_FASTDEBUG_TARGETS) all_debug: $(COMMON_VM_DEBUG_TARGETS) endif endif all_optimized: optimized optimized1 docs export_optimized allzero: all_productzero all_fastdebugzero all_productzero: productzero docs export_product all_fastdebugzero: fastdebugzero docs export_fastdebug all_debugzero: jvmgzero docs export_debug all_optimizedzero: optimizedzero docs export_optimized allshark: all_productshark all_fastdebugshark all_productshark: productshark docs export_product all_fastdebugshark: fastdebugshark docs export_fastdebug all_debugshark: jvmgshark docs export_debug all_optimizedshark: optimizedshark docs export_optimized

由于编译后的 HotSpot 需要进行调试,所以笔者使用的 Make 命令为“ make jvmg jvmg1”,这样一来就确定了 HotSpot 的编译目标类型是 debug 级别。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 23:49:24

Docker技术入门与实战【1.4】

4.4 删除容器可以使用docker rm命令删除处于终止状态的容器,命令格式为docker rm[OPTIONS]CONTAINER[CONTAINERhttp://www.hzcourse.com/resource/readBook? path/openresources/teach_ebook/uncompressed/15029/OEBPS/Text/...]。支持的选项包括:-f,--…

作者头像 李华
网站建设 2026/4/21 23:45:10

解决NaViL-9B部署常见问题:从环境配置到服务启动全攻略

解决NaViL-9B部署常见问题:从环境配置到服务启动全攻略 1. 环境准备与快速部署 NaViL-9B作为原生多模态大语言模型,部署前需要确保硬件环境满足要求: 显卡配置:至少双24GB显存显卡(如NVIDIA RTX 30902)系…

作者头像 李华
网站建设 2026/4/21 23:39:53

如何在 pytest 中通过组合多个 fixture 实现参数化测试

本文介绍一种简洁、可维护的方案:使用 pytest.mark.parametrize 驱动测试逻辑,结合 fixture 依赖链动态生成测试数据,避免直接传递复杂对象,从而安全复用 category、product 等多层 fixture 并为不同场景(如 new/publi…

作者头像 李华
网站建设 2026/4/21 23:38:49

KMS激活终极指南:5分钟搞定Windows和Office永久激活难题

KMS激活终极指南:5分钟搞定Windows和Office永久激活难题 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否曾因Windows系统未激活而烦恼?是否因为Office办公软件弹出…

作者头像 李华
网站建设 2026/4/21 23:35:35

【卷卷观察】Anthropic 改口了:OpenClaw-style Claude CLI 又被允许了

这不是 Anthropic 心软了,是利益计算的结果。HN上这条(225票,151评论)讲的是一件挺有意思的事:Anthropic 正式确认,OpenClaw 那种把 Claude Code CLI 当成 harness 用的方式,又合法了。而就在几…

作者头像 李华
网站建设 2026/4/21 23:33:39

如何高效使用文泉驿微米黑:开源中文字体的完整实践指南

如何高效使用文泉驿微米黑:开源中文字体的完整实践指南 【免费下载链接】fonts-wqy-microhei Debian package for WenQuanYi Micro Hei (mirror of https://anonscm.debian.org/git/pkg-fonts/fonts-wqy-microhei.git) 项目地址: https://gitcode.com/gh_mirrors/…

作者头像 李华