资讯专栏INFORMATION COLUMN

JVM类加载过程

刘明 / 2382人阅读

摘要:,初始化的时候,如果发现父类没有初始化,则需要先对父类初始化。,虚拟机会保证一个类的方法在多线程的环境下被正确的枷锁同步。类加载的过程首先类加载将变量和静态代码块放到类的初始化的方法里面,初始化之后才对象,执行

类加载
类加载的3个过程
类加载器
1,加载
将class文件字节码内容加载到内存中(字节码的来源很多) 并将这些静态的数据转换成方法区中运行是的数据结构(二进制的数据),在堆中生存一个代表这个类的java.lang.Class对象,作为方法区类数据访问入口
2,链接

将java类的二进制代码合并到jvm的运行状态之中的过程
 1),验证:
  确保加载的类信息符合jvm的规范,没有安全方面的问题
 2),准备:
 正式为类变量(static变量)分配内存 并且设置类变量初始化值(全部都是初始默认值),这些内存都在方法区中进行
 3),解析
 虚拟机常量池的符号引用代替换为直接引用的过程int a = 1;转换为直接引用

3, 初始化
1),初始化就是执行类类构造器()方法的过程,类构造器()方法由编译器自动收集类中所有类的变量的赋值动作和静态的语句块(static)的语句合并。
2),初始化的时候,如果发现父类没有初始化,则需要先对父类初始化。
3),虚拟机会保证一个类的()方法在多线程的环境下 被正确的枷锁同步。
4),当访问一个类的静态域的时候,只有真正声明这个域的类才会被初始化。

/**
 * 类加载的过程
 * 首先类加载 将变量和static静态代码块放到类的初始化的方法里面,初始化之后才new对象,执行static
 * @author Administrator
 *
 */
public class Demo01 {
    public static void main(String[] args) {
        A a = new A();
        System.out.println(A.width);
    }
}
class A{
    public static int width = 100;
    static{
        System.out.println("initialized model A");
        width = 300;
    }
    public A(){
        System.out.println("generating A object");
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64867.html

相关文章

  • JVM加载过程 & 双亲委派模型

    摘要:类加载过程双亲委派模型声明文章均为本人技术笔记,转载请注明出处类加载过程类加载机制将类描述数据从文件中加载到内存,并对数据进行,解析和初始化,最终形成被直接使用的类型。深入理解虚拟机高级特性与最佳实践加载加载阶段由类加载器负责,过程见类加载 JVM类加载过程 & 双亲委派模型 声明 文章均为本人技术笔记,转载请注明出处https://segmentfault.com/u/yzwall ...

    happen 评论0 收藏0
  • JVM实战---加载过程

    任何程序都需要加载到内存才能与CPU进行交流 同理, 字节码.class文件同样需要加载到内存中,才可以实例化类 ClassLoader的使命就是提前加载.class 类文件到内存中 在加载类时,使用的是Parents Delegation Model(溯源委派加载模型) Java的类加载器是一个运行时核心基础设施模块,主要是在启动之初进行类的加载、链接、初始化 showImg(https://s...

    bladefury 评论0 收藏0
  • 从一无所知到无所不知————jvm系列(1)

    摘要:学习能更深入的理解这门语言,能理解语言底层的执行过程,深入到字节码层次。 目录   前言 程序的运行 1.JVM类加载机制 ①一般在什么情况下会去加载一个类?也就是说,什么时候.class字节码文件中加载这个类到JVM内存里来? ②验证、准备、初始化 ③初始化 2.类加载器和双亲委派机制 ...

    Betta 评论0 收藏0
  • JVM 的 工作原理,层次结构 以及 GC工作原理

    摘要:执行引擎作用执行字节码,或者执行本地方法运行时数据区其实就是指在运行期间,其对内存空间的划分和分配。 虽是读书笔记,但是如转载请注明出处https://uestc-dpz.github.io..拒绝伸手复制党 JVM Java 虚拟机 Java 虚拟机(Java virtual machine,JVM)是运行 Java 程序必不可少的机制。JVM实现了Java语言最重要的特征:即平台...

    qqlcbb 评论0 收藏0
  • JVM加载过程分析及验证

    摘要:类加载过程共分为加载验证准备解析初始化使用和卸载七个阶段这些阶段通常都是互相交叉的混合式进行的,通常会在一个阶段执行的过程中调用或激活另外一个阶段。 JVM类加载过程共分为加载、验证、准备、解析、初始化、使用和卸载七个阶段showImg(https://segmentfault.com/img/bV0D9R?w=634&h=203);这些阶段通常都是互相交叉的混合式进行的,通常会在一个...

    zhangyucha0 评论0 收藏0
  • 学习JVM是如何从入门到放弃的?

    摘要:而字节码运行在之上,所以不用关心字节码是在哪个操作系统编译的,只要符合规范,那么,这个字节码文件就是可运行的。好处防止内存中出现多份同样的字节码安全性角度特别说明类加载器在成功加载某个类之后,会把得到的类的实例缓存起来。 前言 只有光头才能变强 JVM在准备面试的时候就有看了,一直没时间写笔记。现在到了一家公司实习,闲的时候就写写,刷刷JVM博客,刷刷电子书。 学习JVM的目的也很简单...

    Joyven 评论0 收藏0

发表评论

0条评论

刘明

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<