参考资料:
- https://github.com/zxh0/jvmgo-book
- 《自己动手写Java虚拟机》
- Java语言规范、Java虚拟机规范
- https://github.com/zxh0/classpy
cd /Users/nibnait/github/classpy && ./gradlew run
类加载过程:ClassLoader.loadClass()
图9-1只画出了 Class 和 Object 结构体的必要字段,并且刻意分开了堆和方法区。
在方法区中,class1 和 class2 分别是 java.lang.Object 和 java.lang.Class 类的数据。
在堆中,object1 和 object2 分别是 java.lang.Object 和 java.lang.Class 的类对象。object3 是单独的 java.lang.Object 实例。
方法调用过程:MethodInvokeLogic.invokeMethod()
todo
remove hack INVOKE_VIRTUAL.println()
不过遗憾的是,有很多重要的内容没有讨论:class文件验证、 内存管理和垃圾回收、类加载器的委派模型、多线程、JIT,等等。如果本书有机会出第2版,希望可以涵盖这些内容。