千家信息网

JVM的class装载是什么意思

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"JVM的class装载是什么意思",在日常操作中,相信很多人在JVM的class装载是什么意思问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"JVM的c
千家信息网最后更新 2026年11月03日JVM的class装载是什么意思

这篇文章主要介绍"JVM的class装载是什么意思",在日常操作中,相信很多人在JVM的class装载是什么意思问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"JVM的class装载是什么意思"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

过程

装载

条件

主动使用 class时

  • 创建一个类的实例 (new 、反射、克隆、反序列化)

  • 调用类的静态方法(invokestatic)

  • 使用类或接口的静态字段(getstatic、putstatic)

  • 使用 reflect反射

  • 初始化子类,先初始化父类

  • main方法的类

例子

被动引用不会初始化类

package com.mousycoder.mycode.thinking_in_jvm;/** * @version 1.0 * @author: mousycoder * @date: 2019-09-02 16:29 */public class Parent {    static {        System.out.println("Parent init");    }    public static int v = 100;}package com.mousycoder.mycode.thinking_in_jvm;import sun.jvm.hotspot.memory.ParNewGeneration;/** * @version 1.0 * @author: mousycoder * @date: 2019-09-02 16:29 */public class Child extends Parent {    static {        System.out.println("Child init");    }}package com.mousycoder.mycode.thinking_in_jvm;/** * @version 1.0 * @author: mousycoder * @date: 2019-09-02 16:32 */public class UseParent {    public static void main(String[] args) {        System.out.println(Child.v);    }}

虚拟机参数 -XX:+TraceClassLoading 输出

[Loaded com.mousycoder.mycode.thinking_in_jvm.Parent from file:/Users/mousycoder/My/code/mycode/target/classes/][Loaded com.mousycoder.mycode.thinking_in_jvm.Child from file:/Users/mousycoder/My/code/mycode/target/classes/]Parent init100[Loaded java.lang.Shutdown from /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Shutdown$Lock from /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/rt.jar]

表示 Child被加载了,但是没有被初始化

final 常量不会引起类初始化

package com.mousycoder.mycode.thinking_in_jvm;/** * @version 1.0 * @author: mousycoder * @date: 2019-09-02 16:41 */public class FinalFieldClass {    public static final String constString = "CONST";    static {        System.out.println("FinalFieldClass init");    }}package com.mousycoder.mycode.thinking_in_jvm;public class UseFinalField {    public static void main(String[] args) {        System.out.println(FinalFieldClass.constString);    }}

输出

CONST

FinalFieldClass 类没有因为常量 constString 被引用而初始化,而是直接把CONST 放在常量池中

加载

例子:加载String类

package com.mousycoder.mycode.thinking_in_jvm;import java.lang.reflect.Method;import java.lang.reflect.Modifier;/** * @version 1.0 * @author: mousycoder * @date: 2019-09-03 13:38 */public class StringTest {    public static void main(String[] args) throws ClassNotFoundException {        Class clzStr = Class.forName("java.lang.String");        Method[] ms = clzStr.getDeclaredMethods();        for (Method m : ms) {            String mod = Modifier.toString(m.getModifiers());            System.out.println(mod + " " + m.getName() + " ( ");            Class[] ps = m.getParameterTypes();            if (ps.length == 0 ){                System.out.println(')');            }            for (int i = 0; i < ps.length; i++) {                char end =i==ps.length-1 ? ')':',';                System.out.println(ps[i].getSimpleName() + end);            }            System.out.println();        }    }}

输出 `` public equals ( Object)

public toString ( )

public hashCode ( )

public volatile compareTo ( Object)

public compareTo ( String)

public indexOf ( String, int)` ``

验证

保证加载的字节码合法

准备

为类分配对应的内存空间,并设置初始值,此阶段不会有 java 代码执行 |类型|默认初始值| |--|--| |int|0| |long|0L| |short|(short)0| |char|\u0000| |boolean|false| |reference|null| |float|0f| |double|0f|

解析

将类、接口、字段、方法的符号引用(字面量的引用)转成直接引用(找到方法中表的位置)

初始化

执行类的初始化方法,此方法由编译器自动生成的,由类静态成员的赋值语句以及static 语句块合并产生 其中函数是带锁线程安全的,可能会导致死锁。

到此,关于"JVM的class装载是什么意思"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

方法 装载 意思 学习 常量 静态 输出 例子 字段 接口 更多 语句 反射 帮助 合法 主动 接下来 中表 位置 内存 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州为想互联网科技有限公司 互联网科技官网 互联网科技会 西安互联网科技公司 互联网科技网站 互联网 新科技 四川狮子座互联网科技 互联网科技咨询 科技大学互联网专业好不好 成都玖崟互联网科技有限公司乐商圈怎么样 现代科技和互联网有关系吗 移动互联网科技股 坤平互联网科技 银川新华互联网科技学校联系电话 四川慕妮娅互联网科技有限公司 烟台灵鸽互联网科技有限公司 锡山区互联网智能科技产品供应 江苏互联网智能科技软件 互联网科技年终奖 科技互联网经济论坛 云信互联网科技有限公司 互联网科技公司名称 中国的互联网科技企业的崛起 互联网科技项目计划书材料类 重庆互联网医院沙龙医盟信息科技 荆州市昕露互联网络科技有限公司 996高科技互联网公司 每天都有哪些好的互联网科技 互联网企业和网络科技有限公司 科技互联网企业在行动
0