zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【jvm我能讲两小时015】类加载器连接的准备阶段做了什么?

JVM连接 什么 加载 准备 阶段 小时 我能
2023-09-27 14:29:28 时间

类加载器连接的准备阶段做了什么?

准备阶段是正式为类中定义的变量(静态变量,被static修饰的变量),分配内存并设置初始值的过程

这些变量使用的空间应当在方法区中进行分配,在jdk1.7及之前,hotspot使用永久代来实现方法区,在jdk1.8之后,类变量会随着class对象一起存放在堆中.

准备阶段进行内存分配的只有类变量 不包含实例变量,实例变量需要在对象实例化后在堆中分配,通常情况下,初始值一般为零值.

public static int value=123;

准备阶段初始值是0不是123,因为在此时还没执行任务java方法,而把value赋值为123是在putstatic指令是程序被编译后,存放在类构造器的clinit方法中,赋值为123在类的初始化阶段

上面说的通常情况是初始值为零值,特殊情况下直接赋予ConstantValue属性值.比如final static String