日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

jdk源碼閱讀順序 jdk源碼垃圾

1、先說一下源碼解析的過程:JDK–>JRE–>JVM(以openJDK代替)
注意:這里要了解jdk和jre和jvm他們分別是什么?以及他們的關系才可以繼續(xù) 。這里先上一章從網(wǎng)上下載的關系圖方便理解

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 開發(fā)工具包
—— —— 針對操作系統(tǒng)的部分
—— —— share:與平臺無關的實現(xiàn)
—— langtools:Java 語言工具
—— nashorn:JVM 上的 JavaScript 運行時
4、因為要了解jvm虛擬機 。所以進入hotspot目錄下
【jdk源碼閱讀順序 jdk源碼垃圾】其中Hotspot就是我們要看的JVM包
Hotspot:全稱 Java HotSpot Performance Engine , 是 Java 虛擬機的一個實現(xiàn) , 包含了服務器版和桌面應用程序版 。利用 JIT 及自適應優(yōu)化技術(自動查找性能熱點并進行動態(tài)優(yōu)化)來提高性能 。
使用 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的客戶端實現(xiàn)
├─make 用來build出HotSpot的各種配置文件
├─src HotSpot VM的源代碼
│ ├─cpu CPU相關代碼(匯編器、模板解釋器、ad文件、部分runtime函數(shù)在這里實現(xiàn))
│ ├─os 操作系相關代碼
│ ├─os_cpu 操作系統(tǒng)+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 動態(tài)編譯器的公共服務/從動態(tài)編譯器到VM的接口
│ ├─classfile 類文件的處理(包括類加載和系統(tǒng)符號表等)
│ ├─code 動態(tài)生成的代碼的管理
│ ├─compiler 從VM調用動態(tài)編譯器的接口
│ ├─gc_implementation GC的實現(xiàn)
│ │ ├─concurrentMarkSweep Concurrent Mark Sweep GC的實現(xiàn)
│ │ ├─g1 Garbage-First GC的實現(xiàn)(不使用老的分代式GC框架)
│ │ ├─parallelScavenge ParallelScavenge GC的實現(xiàn)(server VM默認 , 不使用老的分代式GC框架)
│ │ ├─parNew ParNew GC的實現(xiàn)
│ │ └─shared GC的共通實現(xiàn)
│ ├─gc_interface GC的接口
│ ├─interpreter 解釋器 , 包括“模板解釋器”(官方版在用)和“C++解釋器”(官方版不在用)

推薦閱讀