深度研究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 ... ,努力更新让大家不要等待太久...

深度研究JDK的各种技术细节的更多相关文章
- 深度研究:回归模型评价指标R2_score
回归模型的性能的评价指标主要有:RMSE(平方根误差).MAE(平均绝对误差).MSE(平均平方误差).R2_score.但是当量纲不同时,RMSE.MAE.MSE难以衡量模型效果好坏.这就需要用到R ...
- Dotnet Core IHttpClientFactory深度研究
今天,我们深度研究一下IHttpClientFactory. 一.前言 最早,我们是在Dotnet Framework中接触到HttpClient. HttpClient给我们提供了与HTTP交互 ...
- 研究jdk关于TreeMap 红黑树算法实现
因为TreeMap的实现方式是用红黑树这种数据结构进行存储的,所以呢我主要通过分析红黑树的实现在看待TreeMap,侧重点也在于如何实现红黑树,因为网上已经有非常都的关于红黑树的实现.我也看了些,但是 ...
- [转]关于strtok和strtok_r函数的深度研究
在linux环境下,字符串分割的函数中,大家比较常用的是strtok函数,这个函数用处很大,但也有一些问题,以下将深度挖掘一下这个函数的用法,原理,实现,其次,该函数是不可再入函数,但是在linux ...
- 深度剖析JDK动态代理机制
摘要 相比于静态代理,动态代理避免了开发人员编写各个繁锁的静态代理类,只需简单地指定一组接口及目标类对象就能动态的获得代理对象. 代理模式 使用代理模式必须要让代理类和目标类实现相同的接口,客户端通过 ...
- Java多线程之interrupt()的深度研究
近期学习Java多线程的中断机制,网上的帖子说得很浅,并没深究其原理.看了Java源码,对Java的中断机制有了略深入的理解,在这篇文章中向感兴趣的网友分享下.这篇文章主要通过一个典型例子对中断机制进 ...
- keystone 认证深度研究分析
一.Keystone Token深度概述 Keystone作为OpenStack项目基础认证模块,目前支持的token类型分别是uuid.pkiz.pki.fernet. 首先,简要叙述一下这四种类型 ...
- 操作系统深度研究(75页PPT)
上一篇:命令行版的斗地主你玩过没? 内容覆盖操作系统基本概念.分类.关键技术,体系架构,发展历程和主流国产操作系统厂商分析. 文中报告节选自兴业证券经济与金融研究院已公开发布研究报告,具体报告内容及相 ...
- Cookie在IE缓存问题深度研究
最近在发布net到生产环境的时候,测试发现了问题,IE的登录无效. 同样的版本在QA环境没有遇到问题. 代码一样,chrome,firefox 都可以.就是IE不行,调试发现 登录完成,读取cooki ...
- 深度研究Oracle数据库临时数据的处理方法
在Oracle数据库中进行排序.分组汇总.索引等到作时,会产生很多的临时数据.如有一张员工信息表,数据库中是安装记录建立的时间来保存的.如果用户查询时,使用Order BY排序语句指定按员工编号来排序 ...
随机推荐
- 重磅宣布|强强联合,腾讯云携手Veeam提供云上数据存储服务
近日获悉,腾讯云对象存储COS正式通过Veeam备份软件标准化测试,携手为用户提供云上数据存储服务. Veeam对COS的支持是通过SOBR( Scale out backup repository) ...
- 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-8- 元素高级定位技巧(详细教程)
1.简介 随着网页的复杂性和动态性的增加,自动化测试变得越来越重要.Playwright作为一款强大的无头浏览器测试库,提供了多种元素定位方式,使得我们能够轻松地对网页进行自动化操作.在基础的定位方式 ...
- d2js + activiti 备忘
很久没玩 activiti 了再摸起来都有点陌生了,梳理了一下要点如下: 1. d2js 作为业务端发起流程. d2js.exports.vocationRequest = d2js.vocation ...
- sudo: source: command not found
在Ubuntu上配置了jdk(非root用户),要使它的配置生效,在执行 sudo source /etc/profile 的时候提示 ,sudo: source: command not found ...
- 龙哥量化:通达信的macd改进优化方法及选股公式源码
有很多同学是看macd的数值,遇到股价比较低的,macd数值变成0.00,就看不明白了, 优化: 第一步,给股价乘100,所有的哦 源码: DIF:EMA(CLOSE*100,12)-EMA(CLOS ...
- [转]为什么VS提示SurfFeatureDetector不是cv的成员函数
surf和sift算法都是在头文件#include <opencv2/features2d/features2d.hpp>中,但在新的opencv版本出来后,如果仍然使用这个头文件就会出现 ...
- IM跨平台技术学习(十一):环信基于Electron打包Web IM桌面端的技术实践
本文由环信技术黄飞鹏分享,原题"实战|如何利用 Electron 快速开发一个桌面端应用",本文进行了排版和内容优化等. 1.引言 早就听说利用Electron可以非常便捷的将网页 ...
- 记一次 .NET某电商医药网站 CPU爆高分析
一:背景 1. 讲故事 准备明年把.NET高级调试的训练营的课程进行重构,采用案例引导式,而CPU爆高类有不少是程序员在写代码的时候不注意时间复杂度,在数据量稍微大一点的情况直接幻化成了死循环,时间复 ...
- Mac_使用allure 生成测试报告
在mac下使用allure 生成测试报告,需要安装软件为: 1. pytest 2. allure-pytest 或者 pytest-allure-adaptor (记住二者只能选其一) 3. all ...
- Solution -「LNOI 2022」「洛谷 P8367」盒
\(\mathscr{Desription}\) Link. 有 \(n\) 个盒子排成一排,第 \(i\) 个盒子内有 \(a_i\) 个球.球可以在相邻盒子间传递,\(i\) 与 \(i+ ...