首先访问[OpenJDK官网](http://openjdk.java.net/)
点击左侧菜单栏的Mercurial
你可以选择JDK不同的版本,这里我选择JDK10进行下载
继续点击hotspot
选择zip格式下载
下载后解压,目录结构内容如下
下载完成之后,接下来我们使用CLion工具导入JVM源码(需要去https://www.jetbrains.com/官网下载CLion工具)
这样我们就可以方便的查询和阅读JVM源码了. 从源码中寻找一些底层的答案.
我们平时常看的源码基本都在src/share/vm目录下,目录的名称基本都是见名知意.
当然,我们也可以从GitHub上下载JDK源码,和上面的JVM源码一起辅助学习.
以上也仅仅是下载了源码,关于如何阅读JVM源码也是一个学问.
我们在学习synchronized的时候,如果仅仅是学习语言表面知识是不够的,需要我们深入JVM底层,查看重量级锁的实现过程,对象头的内容长啥样等等,都需要有从JVM源码中寻找答案.
synchronized的底层使用C 实现的monitor(监视器)实现了重量级锁.包括锁的阻塞队列和等待队列如何实现的,实际上也是C 中的某几个变量属性实现的.