
JVM
寒青~
这个作者很懒,什么都没留下…
展开
-
JVM Java虚拟机栈(栈帧:方法返回地址)
目录一:方法重写的本质:一:方法重写的本质:找到操作数栈顶的第一个元素所执行的对象的实际类型,记作C。如果在类型C中找到与常量池中的描述符合简单名称都相符的方法,则进行访问权限校验,如果通过则返回这个方法的直接引用,查找过程结束:如果不通过,则返回IllegalAccessError异常。否则按照继承关系从下往上一次对C的各个父类进行第2步的搜索和验证过程。如果始终没有找到合适的方法,则抛出AbstratcMethodError异常。...原创 2020-08-05 23:26:33 · 1275 阅读 · 0 评论 -
JVM Java虚拟机栈(栈帧:动态链接)
目录原创 2020-08-05 20:46:49 · 3581 阅读 · 0 评论 -
JVM Java虚拟机栈(栈帧:操作数栈)
目录一:特点:二.执行过程:1.第一步:2.第二步:3.第三步:4.第四步:一:特点:操作数栈,主要用于保存计算过程中的中间结果,同时作为计算过程中变量临时的存储空间。操作数栈就是JVM执行引擎的一个工作区,当一个方法刚开始执行的时候,一个新的栈帧也会随之被创建,这个方法的操作数栈是空的。每一个操作数栈都会拥有一个明确的栈深度用于存储数值。如果被调用的方法带有返回值的话,其返回值将会被压入当前栈帧的操作数栈中。我们说是java虚拟机的解释引擎是基于栈的执行引擎,其中的栈指的就是操作数栈。如果原创 2020-08-03 23:20:09 · 1971 阅读 · 0 评论 -
JVM Java虚拟机栈(栈帧:局部变量表)
目录局部变量表(local variables)一.作用:二. Slot(变量槽):1.概述:2.Slot重复利用:三.两个补充说明:局部变量表(local variables)一.作用:局部变量表也称为局部变量数组或本地变量表定义为一个数字数组,主要用于存储方法参数和定义在方法体内的局部变量,这些数据包括各类基本数据类型、对象引用,以及返回值类型。由于局部变量表是建立在线程的栈上,是线程的私有数据,因此不存在数据安全问题局部变量表所需的容量大小是在编译期确定下来的,并保存在方法的Code属性原创 2020-08-01 17:08:05 · 1231 阅读 · 0 评论 -
JVM Java虚拟机栈(概述)
目录一.虚拟机栈的特点:二.虚拟机栈可能出现的异常:1.手动设置栈的空间大小:一.虚拟机栈的特点:栈是一种快速有效的分配存储方式,访问速度仅次于程序计数器。JVM直接对Java栈的操作有两个,一个是每个方法的执行都伴随入栈,另一个是结束后出栈。对于栈来说不存在垃圾回收问题二.虚拟机栈可能出现的异常:java 虚拟机规范允许Java栈的大小是动态的或者是固定不变的如果采用固定大小的Java虚拟机栈,那每一个线程的Java虚拟机栈的容量可以在线程创建的时候独立选定。如果线程请求分配的栈容量超原创 2020-08-01 15:20:16 · 470 阅读 · 0 评论 -
JVM PC寄存器/程序计数器
目录JVM运行时区域内部结构:一.PC寄存器的特点:二.PC寄存器的作用:三.面试中的两个常见的问题:1.使用PC寄存器的存储字节码指令地址有什么作用?2.为什么使用PC寄存器记录当前线程的执行地址?JVM运行时区域内部结构:一.PC寄存器的特点:它是一块很小的的内存空间,几乎可以忽略不记。也是运行速度最快的区域在jvm规范中,每个线程都有它自己的程序技术器。是线程私有的,声明周期与线程的生命周期保持一致。在任何时间一个线程都要一个方法在执行,也就是所谓的当前方法。程序计数器会存储当前线程正在原创 2020-08-01 14:49:02 · 569 阅读 · 0 评论 -
JVM 双亲委派机制
目录一.类的加载器:1.引导类加载器(Bootstrap ClassLoader):2.扩展类加载器(Extension ClassLoader):3.系统类加载器(System ClassLoader):4.自定义类加载器:二.双亲委派机制:1.工作原理:2.案例:一.类的加载器:1.引导类加载器(Bootstrap ClassLoader):java的核心类库都是引导类加载器负责加载的。主要是调用底层C/C++的方法。不能被java程序获取到没有父亲加载器安装在JAVA_HOME/jre/l原创 2020-07-27 23:48:26 · 659 阅读 · 0 评论