Hotspot 源码入门
准备了解一下 JVM 源码,大概整理了下目录
轻量级版本
├─agent Serviceability Agent的客户端实现
├─make 用来build出HotSpot的各种配置文件
├─src HotSpot VM的源代码
│ ├─cpu CPU相关代码(汇编器、模板解释器、ad文件、部分runtime函数在这里实现)
│ ├─os 操作系相关代码
│ ├─os_cpu 操作系统+CPU的组合相关的代码
│ └─share 平台无关的共通代码
│ ├─tools 工具
│ │ ├─hsdis 反汇编插件
│ │ ├─IdealGraphVisualizer 将server编译器的中间代码可视化的工具
│ │ ├─launcher 启动程序“java”
│ │ ├─LogCompilation 将-XX:+LogCompilation输出的日志(hotspot.log)整理成更容易阅读的格式的工具
│ │ └─ProjectCreator 生成Visual Studio的project文件的工具
│ └─vm HotSpot VM的核心代码
│ ├─adlc 平台描述文件(上面的cpu或os_cpu里的*.ad文件)的编译器
│ ├─asm 汇编器接口
│ ├─c1 client编译器(又称“C1”)
│ ├─ci 动态编译器的公共服务/从动态编译器到VM的接口
│ ├─classfile 类文件的处理(包括类加载和系统符号表等)
│ ├─code 动态生成的代码的管理
│ ├─compiler 从VM调用动态编译器的接口
│ ├─gc_implementation GC的实现
│ │ ├─concurrentMarkSweep Concurrent Mark Sweep GC的实现
│ │ ├─g1 Garbage-First GC的实现(不使用老的分代式GC框架)
│ │ ├─parallelScavenge ParallelScavenge GC的实现(server VM默认,不使用老的分代式GC框架)
│ │ ├─parNew ParNew GC的实现
│ │ └─shared GC的共通实现
│ ├─gc_interface GC的接口
│ ├─interpreter 解释器,包括“模板解释器”(官方版在用)和“C++解释器”(官方版不在用)
│ ├─libadt 一些抽象数据结构
│ ├─memory 内存管理相关(老的分代式GC框架也在这里)
│ ├─oops HotSpot VM的对象系统的实现
│ ├─opto server编译器(又称“C2”或“Opto”)
│ ├─prims HotSpot VM的对外接口,包括部分标准库的native部分和JVMTI实现
│ ├─runtime 运行时支持库(包括线程管理、编译器调度、锁、反射等)
│ ├─services 主要是用来支持JMX之类的管理功能的接口
│ ├─shark 基于LLVM的JIT编译器(官方版里没有使用)
│ └─utilities 一些基本的工具类
└─test 单元测试
src 是源码文件夹,这个文件夹里有4个子文件夹,分别是:
- cpu CPU相关代码(汇编器、模板解释器、ad文件、部分runtime函数在这里实现)
- os 操作系相关代码
- os_cpu 操作系统+CPU的组合相关的代码
- share 平台无关的共通代码 (跨平台的关键)
所有文件夹
└─src├─cpu│ ├─ppc│ │ └─vm│ ├─sparc│ │ └─vm│ ├─x86│ │ └─vm│ └─zero│ └─vm├─os│ ├─aix│ │ └─vm│ ├─bsd│ │ ├─dtrace│ │ ├─launcher│ │ └─vm│ ├─linux│ │ └─vm│ ├─posix│ │ └─vm│ ├─solaris│ │ ├─dtrace│ │ └─vm│ └─windows│ └─vm├─os_cpu│ ├─aix_ppc│ │ └─vm│ ├─bsd_x86│ │ └─vm│ ├─bsd_zero│ │ └─vm│ ├─linux_ppc│ │ └─vm│ ├─linux_sparc│ │ └─vm│ ├─linux_x86│ │ └─vm│ ├─linux_zero│ │ └─vm│ ├─solaris_sparc│ │ └─vm│ ├─solaris_x86│ │ └─vm│ └─windows_x86│ └─vm└─share├─tools│ ├─hsdis│ ├─IdealGraphVisualizer│ │ ├─BatikSVGProxy│ │ │ ├─nbproject│ │ │ └─src│ │ │ └─com│ │ │ └─sun│ │ │ └─hotspot│ │ │ └─igv│ │ │ └─svg│ │ ├─branding│ │ │ ├─core│ │ │ │ └─core.jar│ │ │ │ └─org│ │ │ │ └─netbeans│ │ │ │ └─core│ │ │ │ └─startup│ │ │ └─modules│ │ │ └─org-netbeans-core-windows.jar│ │ │ └─org│ │ │ └─netbeans│ │ │ └─core│ │ │ └─windows│ │ │ └─view│ │ │ └─ui│ │ ├─Bytecodes│ │ │ ├─nbproject│ │ │ └─src│ │ │ └─com│ │ │ └─sun│ │ │ └─hotspot│ │ │ └─igv│ │ │ └─bytecodes│ │ │ └─images│ │ ├─ControlFlow│ │ │ ├─nbproject│ │ │ └─src│ │ │ └─com│ │ │ └─sun│ │ │ └─hotspot│ │ │ └─igv│ │ │ └─controlflow│ │ ├─Coordinator│ │ │ ├─nbproject│ │ │ └─src│ │ │ ├─com│ │ │ │ └─sun│ │ │ │ └─hotspot│ │ │ │ └─igv│ │ │ │ └─coordinator│ │ │ │ ├─actions│ │ │ │ └─images│ │ │ └─META-INF│ │ │ └─services│ │ ├─Data│ │ │ ├─nbproject│ │ │ └─src│ │ │ └─com│ │ │ └─sun│ │ │ └─hotspot│ │ │ └─igv│ │ │ └─data│ │ │ ├─serialization│ │ │ └─services│ │ ├─Difference│ │ │ ├─nbproject│ │ │ └─src│ │ │ └─com│ │ │ └─sun│ │ │ └─hotspot│ │ │ └─igv│ │ │ └─difference│ │ ├─Filter│ │ │ ├─nbproject│ │ │ └─src│ │ │ ├─com│ │ │ │ └─sun│ │ │ │ └─hotspot│ │ │ │ └─igv│ │ │ │ └─filter│ │ │ └─META-INF│ │ │ └─services│ │ ├─FilterWindow│ │ │ ├─nbproject│ │ │ └─src│ │ │ ├─com│ │ │ │ └─sun│ │ │ │ └─hotspot│ │ │ │ └─igv│ │ │ │ └─filterwindow│ │ │ │ ├─actions│ │ │ │ └─images│ │ │ └─META-INF│ │ │ └─services│ │ ├─Graph│ │ │ ├─nbproject│ │ │ └─src│ │ │ └─com│ │ │ └─sun│ │ │ └─hotspot│ │ │ └─igv│ │ │ └─graph│ │ ├─HierarchicalLayout│ │ │ ├─nbproject│ │ │ └─src│ │ │ └─com│ │ │ └─sun│ │ │ └─hotspot│ │ │ └─igv│ │ │ └─hierarchicallayout│ │ ├─Layout│ │ │ ├─nbproject│ │ │ └─src│ │ │ └─com│ │ │ └─sun│ │ │ └─hotspot│ │ │ └─igv│ │ │ └─layout│ │ ├─nbproject│ │ ├─NetworkConnection│ │ │ ├─nbproject│ │ │ └─src│ │ │ ├─com│ │ │ │ └─sun│ │ │ │ └─hotspot│ │ │ │ └─igv│ │ │ │ └─connection│ │ │ └─META-INF│ │ │ └─services│ │ ├─RhinoScriptEngineProxy│ │ │ ├─nbproject│ │ │ └─src│ │ │ ├─com│ │ │ │ └─sun│ │ │ │ └─hotspot│ │ │ │ └─igv│ │ │ │ └─rhino│ │ │ └─META-INF│ │ │ └─services│ │ ├─ServerCompiler│ │ │ ├─nbproject│ │ │ └─src│ │ │ ├─com│ │ │ │ └─sun│ │ │ │ └─hotspot│ │ │ │ └─igv│ │ │ │ └─servercompiler│ │ │ │ └─filters│ │ │ └─META-INF│ │ │ └─services│ │ ├─Settings│ │ │ ├─nbproject│ │ │ └─src│ │ │ └─com│ │ │ └─sun│ │ │ └─hotspot│ │ │ └─igv│ │ │ └─settings│ │ ├─Util│ │ │ ├─nbproject│ │ │ └─src│ │ │ └─com│ │ │ └─sun│ │ │ └─hotspot│ │ │ └─igv│ │ │ └─util│ │ └─View│ │ ├─nbproject│ │ └─src│ │ ├─com│ │ │ └─sun│ │ │ └─hotspot│ │ │ └─igv│ │ │ └─view│ │ │ ├─actions│ │ │ ├─images│ │ │ └─widgets│ │ └─META-INF│ │ └─services│ ├─LogCompilation│ │ └─src│ │ └─com│ │ └─sun│ │ └─hotspot│ │ └─tools│ │ └─compiler│ └─ProjectCreator└─vm├─adlc│ ├─Doc│ └─Test├─asm├─c1├─ci├─classfile├─code├─compiler├─gc_implementation│ ├─concurrentMarkSweep│ ├─g1│ ├─parallelScavenge│ ├─parNew│ └─shared├─gc_interface├─interpreter├─libadt├─memory├─oops├─opto├─precompiled├─prims│ └─wbtestmethods├─runtime├─services├─shark├─trace└─utilities
Hotspot 源码入门相关推荐
- hotspot源码下载
jdk的开源主要体现openjdk项目上,下面简单介绍一下jdk及其子项目hotspot的源码下载方式. 查看全文 http://www.taodudu.cc/news/show-3524756.ht ...
- 深入Hotspot源码,搞清楚JVM的本质
记得我在早些年研究JVM底层的时候,每次遇到native就束手无策,导致每次的底层研究之旅"无疾而终".后来赌气逼着自己学了汇编.C语言.C++--才逐渐让自己对JVM的认知由纯理 ...
- [图解tensorflow源码] 入门准备工作附常用的矩阵计算工具[转]
[图解tensorflow源码] 入门准备工作 附常用的矩阵计算工具[转] Link: https://www.cnblogs.com/yao62995/p/5773142.html tensorfl ...
- hotspot源码角度看OOP之类属性的底层实现(一)
hello,大家好,我是江湖人送外号[道格牙]的子牙老师. 最近看hotspo源码有点入迷.hotspot就像一座宝库,等你探索的东西太多了.每次达到一个新的Level回头细看,都有不同的感触.入迷归 ...
- Hotspot源码解析一
文章目录 call_stub _call_stub_entry例程 JAVA数据结构与面向对象 解析魔数 java字节码 试了一天,windows一直失败.无奈了.安装了一个linux明天试试. 詹姆 ...
- 双管齐下,JDK源码+HotSpot源码一次性学完
JDK源码手册 除了第一章节的内容外,我们会从第二章开始自下而上,从简单到复杂的有顺序的深度学习整个Concurrent包! Semaphore(Semaphore也就是信号量,提供了资源数量的并 ...
- HotSpot源码(一):Docker与虚拟机的区别,class字节码解析,linux内核源码下载地址,Yacc与Lex快速入门
Docker是虚拟机吗? Docker是用来隔离的,使用的是隔离的namespace,使用OS提供的接口进行应用程序之间的资源隔离,不是虚拟机.再加上它自己特殊的文件系统,一层一层叠加.他只不过是一个 ...
- CAS和hotspot源码
一.用AtomicInteger.addAndGet(int delta)为分析的切入点 /*** Atomically adds the given value to the current val ...
- 如何下载jdk源码、hotspot源码
jdk的开源主要体现openjdk项目上,下面简单介绍一下jdk及其子项目hotspot的源码下载方式. 首先我们进入网址:http://hg.openjdk.java.net,这个网址下面列出了所有 ...
最新文章
- 视频码率、视频编码的原理
- 会计专业为什么要学python-一个来自35岁职场高管的忠告:Python为什么不得不学?...
- Documentum中关于日期时间类型字段的特殊处理
- exe注册为service服务
- Quantitative Researcher Summer Internship (for Overseas Schools)
- 用xfire开发webservice实例
- Golang 词法分析器浅析
- 鸿蒙系统上线 华为内部人员喷了,鸿蒙系统上线?华为人员表示:勿上当 山寨网站...
- Oracle SQL (2):SQL Fundamentals(Day II)
- h5 富文本输入框_Html富文本编辑器
- 空调基础知识培训课件
- 【Photoshop】证件照换底色
- Quartus II 无法正常编译bug解决
- 如何在PDF上添加电子签名?签名技巧分享
- TCP/IP基础(三)
- XLNet 详解(看不懂你来骂我)
- Cadence中的电路设计
- Android wifi属性简介 及 wifi信息获取(wifi列表、配置信息
- 最新“量子纠缠”原子使量子计算机更进一步
- python服务器性能测试工具locust使用指南
热门文章
- 简单粗暴教你在VUE中引入微信SDK 调用微信分享、朋友圈分享、QQ分享......
- 严蔚敏《数据结构》——链栈
- Hello Qt(十九)——QT对话框
- 优雅编程之这样处理边界,你就“正常”了!
- QQ空间注销了——2012年5月22日 23:06:25
- 体育生可以学计算机吗,音乐体育计算机必修课 学生都可“私人订制”
- 迅雷VIP的功能免费用
- 佛教观点谈儿童教育问题
- 贪婪算法求解函数最大值如何做
- 微信小程序接入腾讯云IM即时通讯(获取聊天历史记录开发步骤)