/jvm-demo

通过java代码来实现JVM的基础功能(搜索解析class文件、字节码命令、运行时数据区等)

Primary LanguageJava

参考资料:

解析 class 文件

运行时数据区

运行时数据区

数据类型:

指令表

/instructions/README.md

类和对象

类加载过程: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()

数组和字符串

本地方法调用

异常处理

System.out.pringln() 是如何工作的?

todo
remove hack INVOKE_VIRTUAL.println()

不过遗憾的是,有很多重要的内容没有讨论:class文件验证、 内存管理和垃圾回收、类加载器的委派模型、多线程、JIT,等等。如果本书有机会出第2版,希望可以涵盖这些内容。