我的博客

我的博客

JVM可达性分析判断对象是否存活

JVM可达性分析判断对象是否存活

来判断对象是否存活的基本思路就是通过一系列成为“GC Roots”的对象作为起始点,从政节点开始向下搜索,搜索所走过的路径成为引用链,当一个对象到 GC Roots没有任何引用链相连时则证明此对象是不


p19971018  1211  2021-03-15 阅读全文
安全点与安全区域

安全点与安全区域

安全点 用户线程暂停,GC线程要开始工作,但是要确保用户线程刚暂停的这行字节码指令是不会导致引用关系的变化。所以 JVM 会在字节码指令中,选一些指令作为“安全点”,比如方法调用、循环跳转、异常跳转等


p19971018  2043  2020-08-21 阅读全文
Java 方法调用的底层实现

Java 方法调用的底层实现

我们写的代码,经过编译、经过类加载的各种阶段,进入了JVM的运行时数据区。 但作为程序员真正关心的是代码的执行,代码的执行其实本质上是方法的执行,站在JVM 的角度归根到底还是字节码的执行。main


p19971018  1738  2020-08-03 阅读全文
JVM的逃逸分析

JVM的逃逸分析

逃逸分析原理:分析对象动态的作用域,当一个对象在方法中定义后,他可能被外部方法所引用 比如:调用参数传递到其他方法去,这种称之为方法逃逸。甚至还有可能被外部线程所访问,例如给其他线程中的访问的变量,这


p19971018  1002  2020-07-28 阅读全文
String类分析(基于JDK1.8)

String类分析(基于JDK1.8)

String 对象是对 char 数组进行了封装实现的对象,主要有两个成员:char 数组,hash 值 String 对象的不可变性 在实现代码中 String 类被final 关键字修饰了,而且变


p19971018  692  2020-07-23 阅读全文
JVM虚拟机栈的优化技术——栈帧之间数据的共享

JVM虚拟机栈的优化技术——栈帧之间数据的共享

在一般的模型中,两个不同的栈帧的内存区域时独立的,但是大部分的JVM在实现中会进行一些优化,使得两个栈帧出现一部分的重叠。(主要体现在方法中参数传递的情况下),让下面栈帧的操作数栈和上面栈帧的部分局部


p19971018  735  2020-07-20 阅读全文