博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类加载机制
阅读量:5950 次
发布时间:2019-06-19

本文共 1102 字,大约阅读时间需要 3 分钟。

hot3.png

       类加载的过程大概分7个步骤分别是:加载 — 验证 — 准备 — 解析 — 初始化 — 使用 —卸载。这里面也有一个加载,但是需要注意的是,类加载和加载是完全不同的两个概念,加载只是类加载中的一个步骤,其中(验证,准备,解析)统称为连接,接下来为大家一一介绍这几个步骤的意义

 

  •  加载:

 1, 虚拟机加载的时候主要做三件事情:

(1)通过一个类的全限定名来获取定义此类的二进制字节流

(2)将这个字节流所代表的静态存储结构转换为方法区运行时数据结构

(3)在这个方法区中生成代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口

2,数组类本身不是类加载器加载的,是java虚拟机自动创建的

  • 验证

           验证是链接的第一个阶段,主要作用就是确保class文件字节流包含的信息符合虚拟机的要求,不会危害虚拟机的安全

  • 准备

            正式为类变量(不包括实例变量)在方法区分配内存,并且给类变量设置初始值(0值,并不是真正的代码中的设置的值,初始化阶段才会设置真正的值),这也是为什么在写代码的时候类变量不需要设置初始值,而局部变量只有设置初始值的前提下才可以使用。

  • 解析

            将常量池中的符号引用替换为直接引用的过程       

  • 初始化

            初始化阶段是执行类构造器方法的过程

接下来为大家介绍类加载器相关知识

(1)类与类加载器

判断两个类是否相等,只有在两个类是由同一个类加载器生成的同一个对象加载的前提下才有意义,即使是同一个类加载器生成的不同对象加载的类也会相等

(2)双亲委派模型

  • java虚拟机中的类加载器主要分为三类

        (1)启动类加载器,主要负责<JAVA_HOME>\lib目录下面

        (2)扩展类加载器,主要负责<java_home>\lib\ext

        (3)应用程序类加载器:负责加载应用程序类路径上所指定的类库

 

  • 双亲委派模型工作过程

            如多一个类加载器收到加载请求首先会把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,只有当父加载器反馈自己无法完成这个请求的时候,子加载器才会自己去加载

  • 类加载器使用双亲委派模型的好处

        (1)java类随着他的类加载器一起具备了一种带有优先级的层次关系

        (2)防止相同的类被加载,似的基础类不能被保证安全

        (3)防止出现相同的类对象

  • 3次双亲委派模型的破坏

        (1)jdk1.2之前,没有这个模型

        (2)模型自身的缺陷,需要父类加载器委派子类去加载,例如jndi,jdbc等

        (3)用户对程序动态性的最求,例如热部署,代码热替换等,最典型的技术就是osgi

 

 

 

 

 

 

转载于:https://my.oschina.net/u/1169535/blog/867295

你可能感兴趣的文章
console错误合集
查看>>
YII实现dropDownList 联动事件
查看>>
VUE实例图解
查看>>
ECMAScript6(1):块级作用域
查看>>
必知必会JVM垃圾回收——对象搜索算法与回收算法
查看>>
入门系列之在Ubuntu上使用MySQL设置远程数据库优化站点性能
查看>>
opencv python 基于分水岭算法的图像分割
查看>>
NodeJS + Lighthouse + Gulp 搭建自动化网站性能测试工具
查看>>
你们真的了解JS的事件吗?
查看>>
kotlin学习笔记-异常好玩的list集合总结
查看>>
Android模块化之MicroModule(微信Pins工程)
查看>>
次世代的会话管理项目 Spring Session
查看>>
web 缓存服务器 HTTP2 性能测试: nuster vs nginx
查看>>
如何用WebIDE打开并运行CRM Fiori应用
查看>>
antd下拉框联动说明
查看>>
以太坊本地开发环境搭建
查看>>
图说 WebAssembly(二):JIT 编译器
查看>>
多线程设计模式 - Future模式
查看>>
android清理缓存动画、天气APP、购物下单选择器、阅读APP、饿了么demo等源码
查看>>
驳《我不是很懂 Node.js 社区的 DRY 文化》
查看>>