Java体系

要求熟悉以下

  • JVM实现: 最好看过C源码,具体有ClassLoader,线程池,锁,NIO、反射
  • GC: 常见GC的算法与区别
  • EE方向: JMX, HotDeploy
  • 各种业务引擎: RuleEngine, TaskEngine, BPM

本文直接分析JVM源码

使用Clion(GDB)调试小型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会很慢)