03 程序计数器
- 为什么需要程序计数器
- 线程级的
- 程序序计数器,保存的是线程正在执行的字节码地址、行号
- 多线程情况下,线程间切换确保线程正常执行
04栈
内容:
- 局部变量表:一个栈帧对应一个方法,那每个方法里有变量,没毛病~
- 操作数栈:方法里如果有运算操作的话,这个就是暂时存储局部变量的值的临时空间了~
- 方法出口:见名知意,方法里面调方法,里面的方法执行完了,总得知道回到哪里去执行吧~
- 动态链接:在运行时,把符号链接转换为直接链接,就是把每个对象的所在包地址换成内存空间的地址~
特点:
- 线程级,生命周期同线程生命周期
- 无GC,存在OOM、StackOverflowError
- 线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常
- 不停的创建线程,就会抛出OutOfMemoryError
设置大小: -Xss,windows不定,其他默认1024KB
实现
- 数组、链表
早期绑定、晚期绑定
- 编译时绑定的方法为早期绑定
- 运行时动态绑定,为晚期绑定(由于多态、继承而出现)
非虚方法
- 静态方法、私有方法、final 方法、实例构造器、父类方法都是非虚方法
- 其他为
虚方法
7 本地方法栈
本地方法:native
Object: public final native Class<?> getClass();