深入理解计Java虚拟机
参考资料《深入理解Java虚拟机:第3版》
概述Java,91年诞生,95年发布
09年sun被oracle收购
运行时数据区
其中,方法区和堆是所有线程共享的数据区,虚拟机栈、本地方法栈、程序计数器为每份线程独有的。
程序计数器当前线程所执行的字节码的行号指针,由于线程切换后需要恢复执行环境,故每条线程都需要一个独立的程序计数器来保存执行位置,这样才能保证各条线程之间互不影响。
如果当前线程执行方法为本地(native)方法,则当前线程该计数器值为空
虚拟机栈Java虚拟机栈也是线程私有,描述Java方法执行的线程内存模型:每个方法执行时,Java虚拟机都会创建一个栈帧,该栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每个方法从被调用直至执行完毕的过程,对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。
局部变量表中存储的编译期可知的各种Java虚拟机基本数据类型(boolean、byte、char、short、int、float、long、double)、对象引用和returnAddress类型。在局部变量表中这些值会占用不同大小的变量槽,其中64位的long和doubl ...