JVM学习记录
文章平均质量分 58
小猪快跑22
专注于Java以及Android
展开
-
静态内部类为何能够实现单例?
public class DeviceHelper { private DeviceHelper() { } private static class DeviceHelperHolder { /** * jvm 虚拟机规定当主动 new 一个对象时会触发类的初始化,初始化阶段也就是执行类构造器 <clinit>()方法的过程; * <clinit>() 方法对于类来说不是必须的,如果一个类中既没有静态原创 2022-03-08 10:08:11 · 543 阅读 · 1 评论 -
JVM之一:操作数栈和局部变量表
每个方法被执行的时候,JVM 都会在虚拟机栈中创建一个栈帧,栈帧是什么呢? 一、栈帧 栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,每一个线程在执行某个方法时,都会为这个方法创建一个栈帧。 我们可以这样理解:一个线程包含多个栈帧,而每个栈帧内部包含局部变量表、操作数栈、动态连接、返回地址等。 这里来说下 局部变量表的最大长度和操作数栈的最大深度。 当一个方法开始执行的时候操作数栈是空的。 操作数栈的最大深度在编译期就决定了。 栈中的任何一个元素可以是任意的Java 类型原创 2021-12-17 17:34:27 · 1165 阅读 · 0 评论