![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 93
dullet
这个作者很懒,什么都没留下…
展开
-
【JVM】虚拟机字节码执行引擎
在Son类在创建的时候,首先隐式调用了Father的构造函数,Father构造函数中对showmethemoney()调用是一次虚方法调用,所以执行的是son的版本,这时父类中的money被初始化为2,但此时调用的是子类的字段,son没初始化完成,所以为0,之后子类进行初始化,输出为4,最后为编译期就确定的静态类型访问父类的money,所以为2。操作数栈具有先入后出的特点,当一个方法刚开始执行的时候,这个方法的操作数栈为空,在这个方法的执行过程中,会有各种字节码指令往操作数栈中写入和提取内容。...原创 2022-08-01 16:30:10 · 239 阅读 · 0 评论 -
【JVM】虚拟机类加载机制
准备阶段是正式为类中定义的变量(静态变量,也叫类变量,被static修饰)分配内存并设置类变量初始值的阶段,概念上讲,这些变量所使用的内存都应该在方法区中分配,JDK8之后,类变量则随着Class对象一起存放在Java堆中。否则,在C实现的接口列标及它们的父接口中递归查找是否有简单名称和字段描述符与目标相匹配的方法,如果有,则说明类C是一个抽象类(方法在接口中有定义,自身却没有定义,则只可能是抽象类),查找结束,抛出异常。5.接口中不能使用静态语句块,但仍然有变量赋值操作,所以也会有()方法。......原创 2022-08-01 11:43:06 · 259 阅读 · 0 评论 -
【JVM】垃圾收集器与内存分配(二)
在进行MinorGC之前,虚拟机要判断新生代中所有对象的空间是否小于老年代最大可用连续空间,若成立,那这次MinorGC可以确保是安全的,如果大于,则检查担保失败参数是否开启,如果开启,则判断历次进入老年代对象的平均大小是否大于老年代剩余可用连续空间,如果小于,则尝试进行一次MinorGC(这次GC有风险),如果大于或未开启担保失败,则直接进行FullGC。标记一下和GCRoots直接关联的对象,并修改TAMS的值,让下一阶段并发运行时,能够在Region中分配新对象。...原创 2022-07-31 16:10:59 · 124 阅读 · 0 评论 -
【JVM】垃圾收集器与内存分配(一)
垃圾收集器应用于堆内存与方法区,因为这两个区域在内存分配时是不确定的,只有在运行期间我们才能知道创建哪些对象,创建了多少对象,这部分的内存分配与回收也是动态的,垃圾回收关注的正式这部分内存该如何管理。......原创 2022-07-31 12:15:26 · 182 阅读 · 0 评论 -
【JVM】自动内存管理机制
进行加载检查,之后进行对象内存分配,对于规整的JAVA堆进行“指针碰撞”(指针向空闲的空间挪一段距离),不规整的使用空闲列表(分配一块空间对象,并在列表上记录内存块的状态)JAVA虚拟机栈也是线程私有的,栈是内存的一种,每个方法被执行时,虚拟机会创建一个栈帧,栈帧中包含了局部变量表、操作数栈等信息,每个方法从调用到执行完毕,就是一个栈帧从入栈到出栈的过程。从分配角度看,被线程共享的堆可以划分出多个线程私有的分配缓冲区(TLAB),以提升对象分配的效率,但不管怎么划分,堆中存储的都只能是对象的实例。.....原创 2022-07-31 11:47:43 · 288 阅读 · 1 评论