当前位置: 首页 > news >正文

乌尔禾区做网站哪里好推广公司有哪些公司

乌尔禾区做网站哪里好,推广公司有哪些公司,wordpress 自定义摘要,企业网站的运营如何做类加载就是 .class 文件, 从文件(硬盘) 被加载到内存(元数据区)中的过程 类加载的过程 加载: 找 .class 文件的过程, 打开文件, 读文件, 把文件读到内存中 验证: 检查 .class 文件的格式是否正确 .class 是一个二进制文件, 其格式有严格的说明 准备: 给类对象分配内存空间 (先在…

类加载就是 .class 文件, 从文件(硬盘) 被加载到内存(元数据区)中的过程


类加载的过程

在这里插入图片描述

加载: 找 .class 文件的过程, 打开文件, 读文件, 把文件读到内存中

验证: 检查 .class 文件的格式是否正确

  • .class 是一个二进制文件, 其格式有严格的说明

准备: 给类对象分配内存空间 (先在元数据区占个位置), 也会使静态成员被设置成 0 值

解析: 初始化字符串常量, 把符号引用转换为直接引用

  • 字符串常量,有一块内存空间存放其实际内容, 还有一个引用,来保存这块内存空间的起始地址
  • 在类加载之前,字符串常量处在 .class 文件中, 此时这个 引用 记录的并非是字符串常量的真正地址, 而是它在文件中的 “偏移量” (或者说是占位符)
  • 类加载之后, 才真正把这个字符串常量给放到内存中, 此时才有 “内存地址”,该引用才能被真正赋值成指定的内存地址

初始化: 调用构造方法, 进行成员初始化, 执行代码块, 静态代码块, 加载父类 …

顺便看一下类的生命周期

在这里插入图片描述


一个类加载的时机(一个类何时会被加载)

JVM 采用的是懒汉模式

1.构造类的实例
2.调用该类的静态方法 / 使用静态属性
3.加载子类的时候, 会先加载其父类

即用到了, 才加载, 加载过后, 后续使用不必重复加载


双亲委派模型

上述类加载过程中有个环节 ---- 加载 : 找到 .class 文件, 并读取到内存中
双亲委派模型,描述的就是该过程

JVM 提供了三个类加载器
BootstapClassLoader : 负责加载 标准库 中的类, Java 规范要求提供的类(即所有 JVM 都会提供的)
ExtensionClassLoader : 负责加载 JVM 拓展类 中的类, 规范之外, JVM 厂商 / 组织提供的额外的功能
ApplicationClassLoader : 负责加载 用户提供的第三方库 / 用户项目代码 中的类

上述三个类加载器存在 “父子关系”, 即每个类加载器中有一个 parent 属性指向自己的 父 类加载器

上述类加载器如何配合工作?(双亲委派模型的流程)

简单版本:
如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父
类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最 终都应该传送到最顶层的启
动类加载器中,只有当父加载器反馈自己无 法完成这个加载请求(它的搜索范围中没有找到所需的类)
时,子加载器才会尝试自己去完成加载。

详细版本:
当加载一个类的时候, 先从 ApplicationClassLoader 开始
但是 ApplicationClassLoader 不会直接加载, 而是会把任务交给自己的父亲,让父亲去完成
于是 ExtensionClassLoader 就去加载了, 但是 ExtensionClassLoader 也不是直接加载, 而是再委托给自己的父亲去加载
现在 BootstrapClassLoader 就要去加载了, 在此之前, BootstrapClassLoader 也会先委派给自己的父亲, 此时会发现, 自己的父亲是 null
即 BootstrapClassLoader 并没有父亲

  • 没有父亲或者父亲加载完了,没有找到类, 这两种情况下才会由自己加载

此时 BootstrapClassLoader 会加载该类, 即搜索自己负责的标准库目录里的相关类, 如果找到, 就加载, 找不到,则由子类加载器进行加载
ExtensionClassLoader 搜索拓展库相关目录, 如果找到就加载, 找不到就由子类加载器进行加载
ApplicationClassLoader 搜索用户项目相关目录, 如果找到就加载, 找不到就由子类加载器进行加载 (由于 ApplicationClassLoader 没有子加载器, 会抛出异常 ---- 类找不到)

双亲委派模型的目的

保证 Bootstrap 能够先加载类, Appcation 能够后加载类
放在当用户自定义的类和标准库中类同名时, 能够优先使用标准库中的类(防止不必要的 bug)

双亲委派模型的优点(其实就是上面目的的另一种说法)

  1. 避免重复加载类
  2. 安全性: 使用双亲委派模型保证 Java 的核心 API 不被篡改

破坏双亲委派模型

很好的一个示例是 JDBC
其中 Driver 接口的实现类是由 子类加载器加载的 (我自己包里的类肯定是要用的, 如果遵循双亲委派模型, 那我不是白写了 [用不到] )

综上, 是否遵循双亲委派模型可以根据需求具体修改

http://www.dt0577.cn/news/42351.html

相关文章:

  • 西安网站建设开发制作seo上海优化
  • 塘下建设银行网站微信推广平台自己可以做
  • 网站页面设计欣赏优化排名seo
  • 怎样做聊天网站网文推广怎么做
  • 收费报名网站怎么做seo技术网网
  • 合肥做网站域名的公司北京口碑最好的教育机构
  • 坪山新区网站建设数字化营销怎么做
  • 网站建设 精品课程中国十大网站有哪些
  • 西昌市建设工程管理局网站中国教育培训网
  • 做网站的服务器怎么选怎样在百度上注册自己的店铺
  • 包小盒设计网站app推广拉新接单平台
  • 深圳建设企业网站官方进一步优化
  • wordpress 2018百度seo排名优化
  • 邵阳市网站建设网站搜索引擎优化情况怎么写
  • 体育彩票网站开发该做哪些步骤引擎搜索下载
  • wordpress做社区网站深圳英文站seo
  • 亚马逊中文官网网络优化需要哪些知识
  • 太原市建站外包公司沈阳seo排名优化教程
  • 用vsweb做购物网站品牌的宣传及推广
  • 买域名可以自己做网站吗seo课程培训课程
  • 德尔普网络做网站怎么样怎么在百度上做广告
  • 广州越秀区酒店好口碑关键词优化
  • 网站建设最新活动西地那非片的功效与作用
  • 静态网站开发 内容搜索引擎优化什么意思
  • 如何制作家具网站拓客app下载
  • 做公司网站需要提供的资料万能bt搜索引擎网站
  • 滁州网站建设bpbqq免费域名申请个人网站
  • 页面设计班重庆seo论坛
  • 凡科建设网站怎样收录百度深圳推广网络
  • 惠州注册公司代办公司网站推广怎么优化