![](https://img-blog.csdnimg.cn/1effe6529bf14f3db360ee8e6910bb2e.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JVM系列
文章平均质量分 84
JVM系列
兀坐晴窗独饮茶
我的个人博客 http://knightzz.cn/
展开
-
构造方法与方法调用指令分析 || JVM类加载与字节码技术
编译器会按从上至下的顺序,收集所有 {} 代码块和成员变量赋值的代码,形成新的构造方法,但原始构造方法内的代码总是在最后。最终方法(final),私有方法(private),构造方法都是由 invokespecial 指令来调用,属于静。编译器会按从上至下的顺序,收集所有 static 静态代码块和静态成员赋值的代码,合并为一个特殊的方法。new #2 : 是创建【对象】,给对象分配堆内存,执行成功会将【对象引用】压入操作数栈。成员方法与静态方法调用的另一个区别是,执行方法前是否需要【对象引用】原创 2022-10-19 20:55:11 · 468 阅读 · 0 评论 -
条件判断指令分析 || JVM类加载与字节码技术
参考 : https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5.lcmp。以上比较指令中没有 long,flfloat,double 的比较,那么它们要比较怎么办?赋值指令是从操作数栈复制到局部变量表中 , 而累加是 直接在局部变量表中累加。其他的如 do while 和 for 其实都是类似的。原创 2022-10-19 20:54:16 · 352 阅读 · 0 评论 -
字节码指令案例分析 || JVM类加载与字节码技术
可以看到局部变量表中有三个 slot (插槽) , 0 , 1 , 2 分别对应着 args , a , b。a++ 和 ++a 的区别是先执行 iload 还是先执行 iinc。注意 : iinc 指令是直接在局部变量的slot上执行的!从字节码角度分析 a++ 相关题目。原创 2022-10-18 19:06:19 · 520 阅读 · 0 评论 -
类文件结构 || JVM类加载与字节码技术
一个最简单的 HelloWorld 代码, 使用 javac 编译后会生成 HelloWorld.class 文件。原创 2022-10-17 18:54:12 · 282 阅读 · 0 评论 -
JVM垃圾回收算法与原理详解
优点 :缺点 :使用 打印GC信息执行结果如下 :可以看到,其实也是有被回收了,也就是意味着虚拟机并没有因为两个对象相互引用就不回收他们。侧面说明虚拟机并不是通过引用计数法来判断对象是否存活。虽然可引用计数法很简单,也经常被提及,但是HotSpot虚拟机却不是用这个算法来判断对象是否继续被引用,而是使用下面要介绍的算法:可达性分析算法。目前 Java 虚拟机的主流垃圾回收器采取的是可达性分析算法。这个算法的实质在于将一系列 GC Roots 作为初始的存活对象合集(live set),然后从该合集出原创 2022-09-27 08:51:57 · 595 阅读 · 0 评论 -
JVM内存结构详解
Program Counter Register 程序计数器(寄存器):作用: 是记住下一条jvm指令的执行地址特点是线程私有的不会存在内存溢出每一个线程都对应一个程序计数器, 用于存储下一个指令的地址, 不存在内存溢出的原因是 :首先,我们熟悉的栈和堆,都是可以通过运行时对内存需求的扩增导致内存不够用的情况。原创 2022-09-08 19:52:28 · 369 阅读 · 0 评论