Java体系
要求熟悉以下
- JVM实现: 最好看过C源码,具体有ClassLoader,线程池,锁,NIO、反射
- GC: 常见GC的算法与区别
- EE方向: JMX, HotDeploy
- 各种业务引擎: RuleEngine, TaskEngine, BPM
本文直接分析JVM源码
使用Clion(GDB)调试小型JVM源码
JVM与源码阅读工具的选择
初次学习JVM时,不建议去看Android Art、Hotspot等重量级JVM的实现,它内部的防御代码很多,还有android与libcore、bionic库紧密耦合,以及分层、内联甚至能把编译器的语义分析绕进去,因此找一个教学用的、嵌入式小型的JVM有利于节约自己的时间。因为以前折腾过OpenWrt,听过有大神推荐过jamvm,只有不到200个源文件,非常适合学习。
在工具的选择上,个人推荐SourceInsight。对比了好几个工具clion,vscode,sublime,只有sourceinsight对索引、符号表的解析最准确。
sourceInsight的配置
阅读C代码除了Clion外,还推荐使用sourceInsight,这个软件一般在H等硬件厂商用的多,虽然很丑但是速度很快,使用教程见这里
- 记得在View中打开Reference与ContextWindow
- 使用时建议关闭浏览器与各种套壳应用(否则Reference会很慢)