gojvm目录
1、搭建go环境
2、cmd命令行参数解析
3、搜索class文件
4、添加testOption 便于单元测试
5、解析classfile文件
6、运行时数据区
7、指令集
8、解释器
9、创建Class
10、类加载器
11、对象实例化new object
12、方法调用和返回
13 类初始化
14、jvm支持数组
15、jvm支持字符串-数组扩展
16、本地方法调用
17、ClassLoader原理
18、异常处理
19、 启动jvm
知识扩展
rtda 有数据存储和运算功能
存储来自共享数据+私有数据
运算功能来自线程jvm栈帧 用stack计算
帧计算要重点看 jvm stack jvm frame
要写一篇文章专门阐述逻辑
运行时数据区(run-time data area)
运行时数据类型 | 创建和销毁时机 |
---|---|
多线程共享数据 | 虚拟机启动创建,退出销毁 |
线程私有数据 | 创建线程时创建,退出销毁 |
多线程共享数据
多线程共享数据类型 | 位置 | 包含 |
---|---|---|
类数据 | 方法区Method Area(在Heap内) | 字段,方法信息,方法字节码,运行时常量池 |
类实例(对象) | 堆Heap |
此图非常重要
运行时数据pc 寄存器 java虚拟机指令地址
jvm Frame 执行当前方法的帧
数据类型
1、基本类型:变量存放数据本身
2、引用类型:变量存放对象引用,真正对象数据在堆里
基本数据类型 | 引用类型 | |
---|---|---|
布尔类型 | 类类型 | |
数字类型(整型和浮点) | 接口类型 | |
数组类型 | ||
特殊null |
程序计算通过栈stack来实现
实现运行时数据区
tip : 设计前,先定义好对应结构体,再实现功能
go run main -test "rtda" #测试 运行时数据
网友评论