JVM类加载

1

JVM类加载_第1张图片

一、类记载过程

    1、通过类的全限定名获取存储该类的class文件
    2、解析成运行时数据,即instanceKlass实例,存放到方法区
    3、在堆区生成该类的class对象,即instanceMirrorKlass实例 

二、将.class文件解析成什么?类的元信息在JVM中如何存储

加载成Klass,Klass分为InstanceKlass和ArrayKlass

InstanceKlass
    Java类 (非数组)
        InstanceMirrorKlass(镜像类)
            Class对象(堆区)
        InstanceRefKlass
            引用

        InstanceClassLoaderKlass

ArrayKlass

        TypeArrayKlass:描述java中基本数据类型的数据结构

        ObjectArrayKlass: 描述java中引用类型的数据结构

三、Java中的数组

    1、静态数据类型 JVM中内置的八种数据类型
    2、动态数据类型 运行时动态生成的
        如何证明
        newarray
            创建一个制定原始类型(如int,float,char)的数组,并将其引用值压入栈顶
            TypeArrayKlass: 基本类型的数组在JVM中的存在形式
        anewarray
            创建一个引用型(如类,接口,数组)的数组,并将其引用值压入栈顶
            ObjArrayKlass:  引用类型的数组在JVM中的存在形式

四、何时加载

        1、 new getstatic, putstatic, invokestatic
        2、 反射
        3、 初始化一个类的子类会去加载其父类
        4、 启动类(main函数所在类)
        5、 当使用idk.7动志语言支持时

你可能感兴趣的:(jvm,linux,运维)