03 程序计数器

  • 为什么需要程序计数器
    • 线程级的
    • 程序序计数器,保存的是线程正在执行的字节码地址、行号
    • 多线程情况下,线程间切换确保线程正常执行

04栈

  • 内容:

    • 局部变量表:一个栈帧对应一个方法,那每个方法里有变量,没毛病~
    • 操作数栈:方法里如果有运算操作的话,这个就是暂时存储局部变量的值的临时空间了~
    • 方法出口:见名知意,方法里面调方法,里面的方法执行完了,总得知道回到哪里去执行吧~
    • 动态链接:在运行时,把符号链接转换为直接链接,就是把每个对象的所在包地址换成内存空间的地址~
  • 特点:

    • 线程级,生命周期同线程生命周期
    • 无GC,存在OOM、StackOverflowError
      • 线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常
      • 不停的创建线程,就会抛出OutOfMemoryError
  • 设置大小: -Xss,windows不定,其他默认1024KB

  • 实现

    • 数组、链表
  • 早期绑定、晚期绑定

    • 编译时绑定的方法为早期绑定
    • 运行时动态绑定,为晚期绑定(由于多态、继承而出现)
  • 非虚方法

    • 静态方法、私有方法、final 方法、实例构造器、父类方法都是非虚方法
    • 其他为虚方法

7 本地方法栈

  • 本地方法:native

    Object: public final native Class<?> getClass();

上次更新:
贡献者: NOHI