我的博客

我的博客

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  734  2020-07-20 阅读全文
JVM深入辨析堆和栈

JVM深入辨析堆和栈

功能: 以栈帧的方式存储方法调用的过程,并存储方法调用过程中基本数据类型的变量(int、short、long、byte、float、double、boolean、char等)以及对象引用变量,其内存分


p19971018  869  2020-07-20 阅读全文
JVM运行内存的整体流程及详细内存分析

JVM运行内存的整体流程及详细内存分析

JVM在操作系统中启动时,先会向操作系统申请内存,再进行运行时数据区初始化,然后把类加载到方法区,再执行方法。 方法的执行和退出过程在内存上的体现就是虚拟机栈中栈帧的入栈和出栈。 同时在方法的执行过程


p19971018  759  2020-07-20 阅读全文