深度研究JDK的各种技术细节

打算建立一个JDK网站,将目前JDK的各种重要特性都深入分析一下。希望JDK中各种技术实现细节都可以在这个网站上查到。相关的模块以及阅读顺序如下图所示。

没有将一些内容规划进来,Java语言基本语法太简单,Java框架、中间件等内容太多了,JDK类库资料太丰富了,所以这些内容就暂时不写了。下面就是3个免费部分的目录,如下:

1、字节码增强

字节码增强相关内容如下:

复制代码
第1篇-字节码增强概述
第2篇-字节码增强的应用
第3篇-字节码增强框架之ASM
第4篇-字节码增强框架之Javassist
第5篇-字节码增强框架之ByteBuddy
第6篇-反射
第7篇-MethodHandle与MethodType
第8篇-Lambda
第9篇-Attach机制
第10篇-JavaAgent
第11篇-字节码增强源代码剖析
第12篇-DIY反编译工具
第13篇-字节码增强经典工具

2、Java性能优化

Java性能优化相关内容如下:

复制代码
1、基础
第1篇-JDK自带监控及诊断工具
第2篇-常见诊断工具的实现技术
第3篇-JDK自带工具源代码剖析
第4篇-PerfData
第5篇-虚拟机选项
第6篇-Hook

2、JVMTI
第1篇-JVM Tool Interface(JVMTI)
第2篇-JVMTI Agent
第3篇-调试

3、JMX
第1篇-JMX介绍
第2篇-JMX的Notification
第3篇-JMX源代码分析 

4、SA
第1篇-SA介绍 
第2篇-SA的实现方式

5、栈
第1篇-获取Java调用栈
第2篇-获取本地调用栈
第3篇-jstack
第4篇-async-profiler
第5篇-火焰图
第6篇-使用Java Flight Recorder采集热点
第7篇-使用async-profiler采集热点

6、内存
第1篇-Java内存概述
第2篇-NMT
第3篇-直接内存
第4篇-内存分配热点

7、堆
第1篇-Eclipse MAT工具解读
第2篇-堆导出文件heapdump

8、GC
第1篇-GC概述
第2篇-GC信息采集源码剖析
第3篇-Serial GC日志解读
第4篇-Parallel Scavenge的GC日志解读
第5篇-G1 GC日志解读

9、Crash文件
第1篇-虚拟机崩溃处理
第2篇-虚拟机对crash的处理
第3篇-crash文件解读
第4篇-核心转储文件

10、案例剖析
...

3、虚拟机学前基础

虚拟机学前基础的相关内容如下:

复制代码
1、C/C++
第1篇-宏
第2篇-模板类
第3篇-extern关键字
第4篇-动态分派
第5篇-指针和地址偏移
第6篇-重载运算符
第7篇-RAII
第8篇-对齐
第9篇-C/C++中嵌入汇编语法
第10篇-C++一种巧妙的内存管理方式
第11篇-Arena管理内存

2、Linux
第1篇-C++线程
第2篇-程序调用约定
第3篇-信号
第4篇-大页
第5篇-Linux内存布局
第6篇-Linux内存查看
第7篇-Linux内存使用
第8篇-动态链接库

3、x86寄存器与指令
第1篇-x86通用指令
第2篇-eflags寄存器
第3篇-lock指令
第4篇-SIMD
第6篇-CAS

4、x86机器指令
第1篇-指令格式
第2篇-指令前缀
第3篇-Opcode操作码
第5篇-ModR/M
第6篇-SIB
第7篇-Displacement
第8篇-Immediate

5、x86架构CPU
第1篇-x86寄存器
第2篇-Cache
第3篇-预取
第4篇-NUMA架构
第5篇-内存屏障 

6、虚拟机研究工具
第1篇-JITWatch和hsdis
第2篇-C1 Visualizer
第3篇-C2 IdealGraphVisualizer
第4篇-jtreg回归测试
第5篇-JMH
第6篇-HSDB

3个部分的内容都是紧紧围绕着JDK来介绍的,JDK或HotSpot VM涉及不到的基础知识点不会介绍。例如x86架构CPU中介绍预取是因为HotSpot VM有部分源代码解读需要有预取基础,介绍NUMA架构是因为GC有对NUMA架构的支持。

付费部分在今年至少会有3个部分内容完成更新,分别为:

1、Javac前端编译器(内容主要来自于《深入解析Java编译器:源码剖析与实例详解》一书),内容会有少量更新

2、虚拟机基础(内容主要来自于《深入剖析Java虚拟机:源码剖析与实例详解》一书内容),这一章节内容和书比起来,会有许多的更新和增加,增加的部分是虚拟机选项、CMake调试HotSpot VM、CDS、压缩指针等内容,更新主要是尝试让现有的许多内容更深入透彻

3、虚拟机运行,目录已经大概确定,其中涉及到许多复杂的内容,争取早日更新完成。

如果今年能顺利完成如上3个部分内容的更新,接下来更新的是GC的Parallel Scavenge。在虚拟机基础中介绍过Serial GC,这是最简单的一个GC,以这个为基础,Parallel Scavenge不是很难,这个GC仍然是吞吐量的首选,现在仍然比较重要。

下面更新的是G1和C2 ... ,努力更新让大家不要等待太久...