
JVM
吃糖的青蛙
这个作者很懒,什么都没留下…
展开
-
二叉树,红黑树,hash表,B-tree
二叉树二叉树就是左边节点小于右边节点,第一个插入的值被看成根节点,没有自动平衡的功能,所以不稳定,可能会出现从小到大的数字,就是个右树了红黑树下面是我从2输到8所显示的,红黑树的根节点和叶子节点会根据值进行自旋,找到平衡点,红黑树是一种特殊的二叉树。...原创 2021-05-06 16:25:36 · 261 阅读 · 0 评论 -
方法的调用指令区分非虚方法和虚方法
非虚方法如果方法在编译器就确定了具体的调用版本,这个版本在运行时是不可变的,这样的方法称为飞虚方法。静态方法,私有方法,final方法,实例构造器,父类方法都是非虚方法。其他方法都称为虚方法...原创 2021-05-04 22:07:01 · 133 阅读 · 0 评论 -
动态链接的理解与常量池的作用,方法的绑定机制:静态绑定与动态绑定。
为什么需要常量池呢?常量池的作用就是为了提供一些符号和常量,便于指令的识别。将字节码反编译之后就可以看到一个constant pool 这就是常量池的所在地。。。。原创 2021-05-04 20:23:46 · 160 阅读 · 0 评论 -
栈的存储结构和运行原理
栈中存储什么?每个线程都有自己的栈,栈中的数据都是以栈帧(stacke frame)的格式存在。在这个线程上正在执行的的每个方法都各自对应一个栈帧。栈帧是一个内存区块,是一个数据集,维持着方法执行过程中的各种数据信息。...原创 2021-05-02 16:51:04 · 566 阅读 · 0 评论 -
虚拟机栈的常见异常与如何设置栈的大小
栈中可能出现的异常Java虚拟机规范允许Java栈的大小是动态的或者是固定不变的如果采用固定大小的Java虚拟机栈,那每一个线程的Java虚拟机栈容量可以在线程创建的时候独立选定。如果线程请求分配的栈容量超过Java虚拟机栈允许的最大容量,Java虚拟机将会抛出一个StackOverflowError异常。如果Java虚拟机栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的虚拟机栈,那虚拟机将会抛出一个OutOfMemoryError异常.原创 2021-05-02 12:59:38 · 346 阅读 · 4 评论 -
jVM--------虚拟机栈
由于跨平台性设计,java的指令都是根据栈来设计的。不同平台CPU的架构不同,所以不能设计为基于寄存器的。优点是跨平台性,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。...原创 2021-04-29 16:01:20 · 85 阅读 · 0 评论 -
程序计数器
pc寄存器用来存储指向下一条指令的地址,也即将要执行的指令代码。由执行引擎读取下一条指令。程序计数器的解释:1.它是一个很小的内存空间,几乎可以忽略不计,也是运行速度最快的存储区域。2.在JVM规范中,每个线程都有它自己的程序计数器,是线程私有的,生命周期和线程的生命周期保持一致。3.任何时间一个线程都只有一个方法在执行,也就是所谓的当前方法,程序技术会存储当前线程正在执行的java方法的jvm指令地址;或者,如果是在执行native方法,则是未指定值(underfned);...原创 2021-04-28 21:29:19 · 286 阅读 · 0 评论 -
JVM ----双亲委托机制
双亲委托机制解释:Java虚拟机对class文件采取的是按需加载的方式,也就是说需要使用该类时才会将它的class文件加载到内存生成class对象。而且加载某个类的class文件时,Java虚拟机采用的是双亲委托模式即把请求交由父类处理,他是一种任务委派模式。...原创 2021-04-28 17:58:30 · 570 阅读 · 0 评论 -
类加载器分类
JVM支持两种类型的类加载器,分别为引导类加载器(BootStrap ClassLoader)和自定义类加载器(User-Defined ClassLoader)JVM虚拟机是这样是认为的,所有派生于抽象类ClassLoader的类加载器都划分为自定义类加载器,所以扩展类加载器和系统类加载器都被称为自定义类加载器。...原创 2021-04-24 17:39:38 · 117 阅读 · 0 评论 -
类加载子系统的作用-JVM
类加载器子系统负责从文件系统或网络上中加载class文件,class文件在文件开头有特定的文件标识。classLoader只负责class文件的加载,至于他是否可以运行,则由Execution Engine决定。加载的类信息存放于一块称为方法区的内存空间,除了类的信息外,方法区还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是class文件中常量池部分的内存映射)...原创 2021-04-23 10:02:22 · 230 阅读 · 0 评论 -
JVM的生命周期
1.虚拟机的启动Java虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。2.虚拟机的执行一个运动中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始执行时他才运行,程序结束时他就停止。执行一个所谓的Java程序的时候,真真正正在执行的是一个叫做java虚拟机的进程。...原创 2021-04-21 19:09:43 · 95 阅读 · 0 评论 -
JVM的栈处理和寄存器处理
反编译本代码看处理方式package chapter1;public class StackTest { public static void main(String args[]){ int i=2+3; System.out.println(i); }}反编译命令:javap -v StackTest.class栈处理的特点:跨平台性,指令集小,指令多;执行性能比寄存器差。...原创 2021-04-21 17:14:58 · 144 阅读 · 0 评论