美文网首页
JVM类加载机制总结

JVM类加载机制总结

作者: Stringer | 来源:发表于2017-01-18 09:10 被阅读29次

JVM内存分区:五大区

1.Java堆:几乎所有的对象实例和数组都在这类分配内存
2.方法区:它用于存储已经被虚拟机加载的类信息(static)、常量、静态变量、即时编译器编译后的代码等数据
3.虚拟机栈:用于存储局部变量表、操作数栈、动态链接、方法返回地址和一些额外的附加信息
4.本地方法栈: 该区域与虚拟机栈所发挥的作用非常相似,只是虚拟机栈为虚拟机执行Java方法服务,而本地方法栈则为使用到的本地操作系统方法服务
5.程序计数器:它是当前线程所执行的字节码的行号指示器

Paste_Image.png Paste_Image.png

加载流程

Paste_Image.png Paste_Image.png

1.加载:类加载器把编译好的class文件加载到jvm内存中
把静态变量转变为方法区的数据结构
在java堆中生成一个代表这个类的java.lang.Class对象,作为对方法区中这些数据的访问入口
2.验证:验证class文件格式数据是否正确
3.准备(不执行代码):为静态变量赋默认值,分配内存空间
4.解析:将常量池中的符号引用转化为直接引用
5.初始化(执行代码):
先运行静态变量和静态代码块
调用普通方法和构造器,如果父类未初始化则先初始化父类

主动调用:
1.new实例
2.调用反射
3.对static属性赋值
被动调用:
初始化并未用到该类

类加载器详解

Paste_Image.png
Paste_Image.png

双亲委派模型。双亲委派模型要求除了顶层的启动类加载器,其余的类加载器都应该有自己的父类加载器。这里类加载器之间的父子关系一般不会以继承关系来实现,而是使用组合关系来复用父加载器的代码。
双亲委派模型的工作过程是:如果一个类加载器收到了类加载器的请求,它首先不会自己尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父类加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类时),子加载类才会尝试自己去加载。

相关文章

  • JVM——类加载机制

    前言 今天就来介绍类的加载机制以及双亲委派机制。 JVM 类加载机制 JVM 类加载的五个阶段 JVM 类加载机制...

  • JVM类加载学习二-类加载机制学习

    JVM类加载机制 @(Java)[JVM|类文件结构] [TOC] 基本介绍 JVM的类加载机制:JVM把描述类的...

  • JVM——类加载机制

    JVM类加载机制 JVM类加载机制是通过类加载器ClassLoader来将.class文件加载到内存中,以便调用....

  • 类加载机制(一)

    加载机制系列类加载机制(一)类加载机制(二)类加载机制(三) 类加载机制 1.JVM把class文件加载到内存,对...

  • java类加载机制、类加载器、自定义类加载器

    java类加载机制、类加载器、自定义类加载器 类加载机制 java类从被加载到JVM到卸载出JVM,整个生命周期包...

  • Java——JVM篇——收藏系列来啦(终结篇)

    转自:Java——JVM篇——收藏系列来啦(终结篇)侵删。 2.9.JVM 类加载机制 JVM 类加载机制分为五个...

  • 类加载机制

    类加载机制 类加载机制是指 .class文件加载到JVM,并形成Class对象的机制。 类加载机制可以在运行时动态...

  • JVM类加载机制

    这节主要从覆盖JDK的类开始学习JVM的类加载机制。Java和JVM的类加载机制类似,但JVM的类加过程稍有些复杂...

  • 2020最新JAVA核心面试知识整理283页(带详解)

    部分目录预览 部分内容预览 JVM 类加载机制 JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化,下...

  • JAVA类加载机制

    jvm之java类加载机制和类加载器(ClassLoader)的详解java类加载机制:全盘负责、双亲委派、缓存机...

网友评论

      本文标题:JVM类加载机制总结

      本文链接:https://www.haomeiwen.com/subject/amombttx.html