准备了解一下 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 源码入门相关推荐

  1. hotspot源码下载

    jdk的开源主要体现openjdk项目上,下面简单介绍一下jdk及其子项目hotspot的源码下载方式. 查看全文 http://www.taodudu.cc/news/show-3524756.ht ...

  2. 深入Hotspot源码,搞清楚JVM的本质

    记得我在早些年研究JVM底层的时候,每次遇到native就束手无策,导致每次的底层研究之旅"无疾而终".后来赌气逼着自己学了汇编.C语言.C++--才逐渐让自己对JVM的认知由纯理 ...

  3. [图解tensorflow源码] 入门准备工作附常用的矩阵计算工具[转]

    [图解tensorflow源码] 入门准备工作 附常用的矩阵计算工具[转] Link: https://www.cnblogs.com/yao62995/p/5773142.html tensorfl ...

  4. hotspot源码角度看OOP之类属性的底层实现(一)

    hello,大家好,我是江湖人送外号[道格牙]的子牙老师. 最近看hotspo源码有点入迷.hotspot就像一座宝库,等你探索的东西太多了.每次达到一个新的Level回头细看,都有不同的感触.入迷归 ...

  5. Hotspot源码解析一

    文章目录 call_stub _call_stub_entry例程 JAVA数据结构与面向对象 解析魔数 java字节码 试了一天,windows一直失败.无奈了.安装了一个linux明天试试. 詹姆 ...

  6. 双管齐下,JDK源码+HotSpot源码一次性学完

    JDK源码手册 除了第一章节的内容外,我们会从第二章开始自下而上,从简单到复杂的有顺序的深度学习整个Concurrent包! ​ Semaphore(Semaphore也就是信号量,提供了资源数量的并 ...

  7. HotSpot源码(一):Docker与虚拟机的区别,class字节码解析,linux内核源码下载地址,Yacc与Lex快速入门

    Docker是虚拟机吗? Docker是用来隔离的,使用的是隔离的namespace,使用OS提供的接口进行应用程序之间的资源隔离,不是虚拟机.再加上它自己特殊的文件系统,一层一层叠加.他只不过是一个 ...

  8. CAS和hotspot源码

    一.用AtomicInteger.addAndGet(int delta)为分析的切入点 /*** Atomically adds the given value to the current val ...

  9. 如何下载jdk源码、hotspot源码

    jdk的开源主要体现openjdk项目上,下面简单介绍一下jdk及其子项目hotspot的源码下载方式. 首先我们进入网址:http://hg.openjdk.java.net,这个网址下面列出了所有 ...

最新文章

  1. 视频码率、视频编码的原理
  2. 会计专业为什么要学python-一个来自35岁职场高管的忠告:Python为什么不得不学?...
  3. Documentum中关于日期时间类型字段的特殊处理
  4. exe注册为service服务
  5. Quantitative Researcher Summer Internship (for Overseas Schools)
  6. 用xfire开发webservice实例
  7. Golang 词法分析器浅析
  8. 鸿蒙系统上线 华为内部人员喷了,鸿蒙系统上线?华为人员表示:勿上当 山寨网站...
  9. Oracle SQL (2):SQL Fundamentals(Day II)
  10. h5 富文本输入框_Html富文本编辑器
  11. 空调基础知识培训课件
  12. 【Photoshop】证件照换底色
  13. Quartus II 无法正常编译bug解决
  14. 如何在PDF上添加电子签名?签名技巧分享
  15. TCP/IP基础(三)
  16. XLNet 详解(看不懂你来骂我)
  17. Cadence中的电路设计
  18. Android wifi属性简介 及 wifi信息获取(wifi列表、配置信息
  19. 最新“量子纠缠”原子使量子计算机更进一步
  20. python服务器性能测试工具locust使用指南

热门文章

  1. 简单粗暴教你在VUE中引入微信SDK 调用微信分享、朋友圈分享、QQ分享......
  2. 严蔚敏《数据结构》——链栈
  3. Hello Qt(十九)——QT对话框
  4. 优雅编程之这样处理边界,你就“正常”了!
  5. QQ空间注销了——2012年5月22日 23:06:25
  6. 体育生可以学计算机吗,音乐体育计算机必修课 学生都可“私人订制”
  7. 迅雷VIP的功能免费用
  8. 佛教观点谈儿童教育问题
  9. 贪婪算法求解函数最大值如何做
  10. 微信小程序接入腾讯云IM即时通讯(获取聊天历史记录开发步骤)