jdk源码阅读顺序(jdk源码垃圾)

1、先说一下源码解析的过程:JDK–>JRE–>JVM(以openJDK代替)

注意:这里要了解jdk和jre和jvm他们分别是什么?以及他们的关系才可以继续。这里先上一章从网上下载的关系图方便理解

jdk源码阅读顺序(jdk源码垃圾)

2、笔者本地的jdk是oraclejdk,jvm所在位置就是安装的jdk。jdk下jre下bin下server下的jvm.dll。也就是F:Javajdkjdk1.7.0_60jrebinserver这里的jvm.dll。因为jvm.dll不能看,所以这里以下载的openjdk源码作为解析(
openjdk-7u40-fcs-src-b43-26_aug_2013.zip)。

3、openjdk源码目录结构这里上图:

jdk源码阅读顺序(jdk源码垃圾)

解释:

openjdk

—— corba:不流行的多语言、分布式通讯接口

—— hotspot:Java 虚拟机

—— jaxp:XML 处理

—— jaxws:一组 XML web services 的 Java API

—— jdk:java 开发工具包

—— —— 针对操作系统的部分

—— —— share:与平台无关的实现

—— langtools:Java 语言工具

—— nashorn:JVM 上的 JavaScript 运行时

4、因为要了解jvm虚拟机。所以进入hotspot目录下

其中Hotspot就是我们要看的JVM包

Hotspot:全称 Java HotSpot Performance Engine,是 Java 虚拟机的一个实现,包含了服务器版和桌面应用程序版。利用 JIT 及自适应优化技术(自动查找性能热点并进行动态优化)来提高性能。

使用 java -version 可以查看 Hotspot 的版本。

  1. [machao@dev ~]$ java -version
  2. openjdk version “1.8.0_144”
  3. OpenJDK Runtime Environment (build 1.8.0_144-b01)
  4. OpenJDK 64-Bit Server VM (build 25.144-b01, mixed mode)
  5. [machao@dev ~]$

OpenJDK 64-Bit Server VM (build 25.144-b01, mixed mode)就是版本。

所以:我们详解hotspot目录结构

├─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 单元测试

秒鲨号所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈!本站将在三个工作日内改正。
(0)

大家都在看

  • 栀子花叶子发黄干枯掉叶子怎么办(原因和解决方法)

    很多在室内养殖栀子花大多存在一个通病——叶子很容易变黄脱落,出现这种情况的原因有很多,比如营养不足、土壤不适、缺少光照、通风不足等等。下面我们从这几个方面出发,告诉大家如何解决栀子…

    2022年6月20日
  • 刷排名点击软件(推荐刷关键词排名软件)

    1.域名重量的旧值。 选用优质的老域名来构建网站一直是提高网站排名的一种方式。优质老域名不但有较长的历史,也有许多外部连接与反向链接,而且百度蜘蛛很久以前就知道这个域名,最重要的还…

    2022年5月3日
  • 基金理财靠谱吗(基金公司推荐的基金可靠吗)

    2021年的基金年度报告已经全部公布完毕,那么基金在2021年是什么样的表现呢?基金理财给我们带来什么样的机会呢?基金理财到底靠不靠谱呢?下面为你揭示真相! 据数据统计显示,截止2…

    2022年5月23日
  • 苹果6s换电池要多少钱(6s换电池有必要吗)

    众所周知,iPhone战斗力这么强是得益于苹果封闭的iOS系统与硬件的完全匹配。比如苹果的A系列处理器芯片一般可以领先安卓两年,就像iPhoneX A11的性能跑分,直到两年后安卓…

    2022年4月12日 投稿
  • 立知丨华为gpu服务器配置(带你全面了解GPU云服务器)

    gpu服务器哪家好?gpu云服务器文档介绍?GPU 云服务器(GPU Cloud Computing)是基于 GPU 的应用于深度学习、科学计算等多种 GPU 计算场景的快速、稳定…

    2021年6月10日
  • 花瓶抓包(charles抓包工具 )

    除了Fiddler工具之外,还有别的工具可以抓包。本章介绍其他几个常见的抓包工具。 5.1 常见的抓包工具 目前常见的HTTP抓包工具如图5-1所示。 图5-1 常见的抓包工具 5…

    2022年3月2日 投稿
  • 苹果12多少钱(iphone12最新价格)

    接下来一直到9月份,iPhone13都会频繁出现在各大安卓旗舰手机发布会上,因为安卓厂商们在发布旗舰新机的时候经常会用苹果新机来对比,凸显自家旗舰手机到底有多么优秀,而且这也是没办…

    2022年2月25日 投稿
  • 网上阅卷平台有哪些(免费的网上阅卷系统)

    阅卷是本科教学的重要一环。科学有效的阅卷结果是考查教师“教”的质量与学生“学”的效果的重要指标,是指导教学实践、提升教学针对性的指挥棒。 西南石油大学以阅卷为突破口,革新传统阅卷方…

    2022年2月27日
  • 看牙齿医保可以报销吗(看牙齿用医保卡报销吗)

    我国医疗保险的原则是多层次、广覆盖、保基本、可持续。医保的目的是保证老百姓基本医疗的需要,过去对于口腔科医疗耗材是没有纳入医疗保险的医药耗材的目录范围的,补牙也没有纳入医疗报销的目…

    2022年3月11日 投稿
  • 口红品牌的十大排行榜(口红排行榜前十名)

    最受欢迎的口红品牌是指能够在平价的基础上持续为顾客提供高品质的产品。以下是小编为大家准备的2020年度国际十大口红品牌排行榜,不知道该选什么品牌的美眉们可以从以下口红品牌中选出最心…

    2022年6月8日 投稿
品牌推广 在线咨询
返回顶部