Java虚拟机非常复杂,要想真正理解它的工作原理,最好的方式就是自己动手写一个。但是这个系列的定位还是入门,所以有很多的东西暂时都不会实现,比如 malloc,GC,多线程,native interface等。主要的目的还是在于大致了解JVM是一个什么样的东西,这也是我采用java来实现JVM的一个原因,便于理解。
由于我之前也实现过一个简单的可以执行汇编的模拟器,写这个对我来说不难,但是可能出现有些地方我认为理所当然,而刚接触的读者很难理解的情况。如果出现了,欢迎大家在原博客中评论。
下面是原始博客的地址:
https://lyldalek.notion.site/JVM-0x1-c142b76552cd406aad46ff0bd043eba6
该项目的地址:
项目的完成度现在在90%左右了,运行一些简单的类是没有问题的,后面会慢慢扩展。
该系列的文章会对项目的代码进行详细的介绍。这个系列大致会分为下面几个部分,:
该项目并不会去实现对象分配与内存管理,有兴趣的可以看看 csapp 的 malloc lab。
项目的参考资料: