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

怎么用路由器做网站网站设计范例

怎么用路由器做网站,网站设计范例,行情网免费网站大全,重庆做网站公司有哪些JVM 类加载器的工作原理 类加载器(ClassLoader)是一个用于加载类文件的子系统,负责将字节码文件(.class 文件)加载到 JVM 中。Java 类加载器允许 Java 应用程序在运行时动态地加载、链接和初始化类。 2. 类加载器的工…

JVM 类加载器的工作原理

类加载器(ClassLoader)是一个用于加载类文件的子系统,负责将字节码文件(.class 文件)加载到 JVM 中。Java 类加载器允许 Java 应用程序在运行时动态地加载、链接和初始化类。

2. 类加载器的工作过程

JVM 类加载过程主要包括以下三个阶段:

  1. 加载(Loading)

    • 搜索并加载类文件:类加载器通过类名查找相应的 .class 文件,并将其读取到内存中。
    • 生成 Class 对象:将读取到的字节码转换成 JVM 能够识别的 Class 对象。
  2. 链接(Linking)

    • 验证(Verification):确保字节码文件的正确性和安全性,包括检查字节码格式是否正确,操作码是否正确等。
    • 准备(Preparation):为类的静态变量分配内存,并设置默认初始值。
    • 解析(Resolution):将符号引用转换为直接引用。
  3. 初始化(Initialization)

    • 执行类构造器 <clinit> 方法,这是由编译器自动生成的,用于初始化类的静态变量和静态代码块。

3. 类加载器的类型

JVM 中有几种类型的类加载器,每种类加载器有其特定的职责:

  1. 引导类加载器(Bootstrap ClassLoader)

    • 这是 JVM 自带的类加载器,用于加载 Java 核心库(即 JDK 安装目录下的 jre/lib/rt.jar 文件)。
  2. 扩展类加载器(Extension ClassLoader)

    • 加载位于 jre/lib/ext 目录中的类库或通过 java.ext.dirs 系统属性指定的类库。
  3. 应用程序类加载器(Application ClassLoader)

    • 加载应用程序的类路径(classpath)下的类文件,是用户自定义类加载的默认类加载器。
  4. 自定义类加载器(Custom ClassLoader)

    • 用户可以通过继承 ClassLoader 类并重写其方法来定义自己的类加载器。

双亲委派模型

Java 的类加载器采用双亲委派模型(Parent Delegation Model),其核心思想是:某个类加载器在加载类时,首先将类加载请求委托给父类加载器,只有在父类加载器无法完成加载时,才尝试自己加载。这一模型可以有效避免类的重复加载,确保 Java 核心类库的安全性。

双亲委派模型的工作流程

  1. 类加载请求:当应用程序需要使用一个类时,类加载器接收到该类的加载请求。
  2. 委派父加载器:当前类加载器首先将加载请求委派给它的父加载器。
  3. 递归检查:父加载器再将请求委派给它的父加载器,依次递归,直到到达引导类加载器。
  4. 加载类
    • 父加载器加载成功:如果父加载器能够找到并加载该类,则直接返回该类的 Class 对象。
    • 父加载器加载失败:如果父加载器无法加载该类,则返回给子加载器,由子加载器尝试加载。

双亲委派模型的好处

  1. 保证核心类库的安全性:通过双亲委派机制,Java 核心类库(如 java.lang.Object)由引导类加载器统一加载,避免了核心类库被篡改的风险。
  2. 避免类的重复加载:通过委派机制,可以避免同一个类被多个类加载器重复加载,从而减少内存消耗和潜在的类冲突问题。
  3. 模块化和灵活性:支持不同类加载器加载不同模块,提高了系统的模块化和灵活性。

双亲委派模型的实现

Java 类加载器通过以下几个类和方法实现双亲委派模型:

  • ClassLoader 类:Java 提供了一个抽象类 ClassLoader,所有类加载器都需要继承这个类。
  • loadClass 方法ClassLoader 类的核心方法之一,用于加载类。默认实现了双亲委派模型。
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {synchronized (getClassLoadingLock(name)) {// 检查类是否已经加载Class<?> c = findLoadedClass(name);if (c == null) {try {// 委派父加载器加载类if (parent != null) {c = parent.loadClass(name, false);} else {c = findBootstrapClassOrNull(name);}} catch (ClassNotFoundException e) {// 父加载器未找到类}// 当前加载器尝试加载类if (c == null) {c = findClass(name);}}if (resolve) {resolveClass(c);}return c;}
}

双亲委派模型的实例

假设有一个自定义类加载器 CustomClassLoader,其父类加载器为系统类加载器。

public class CustomClassLoader extends ClassLoader {public CustomClassLoader(ClassLoader parent) {super(parent);}@Overridepublic Class<?> findClass(String name) throws ClassNotFoundException {byte[] classData = loadClassData(name);if (classData == null) {throw new ClassNotFoundException();}return defineClass(name, classData, 0, classData.length);}private byte[] loadClassData(String name) {// 自定义加载类文件字节码的逻辑return null;}
}

在加载类时,CustomClassLoader 会首先将加载请求委派给父加载器(系统类加载器),如果系统类加载器无法找到该类,才会使用 findClass 方法加载。

参考链接

  • Java 官方文档 - 类加载器

在这里插入图片描述

http://www.laogonggong.com/news/68416.html

相关文章:

  • 17一起做网站童装网站进不去怎么解决
  • 手机里面的网站怎么制作frontpage网站建设论文
  • 郑州免费做网站的甘肃模板型网站建设
  • 哪个网站专注做微信模板网站建设吉金手指排名11
  • 江苏哪家做网站排名比较好一套公司vi设计多少钱一
  • 计算机网站开发就业形势免费自建网站有哪些
  • 网站建设项目实施方案ppt软件
  • 做百度网站如何收费哈尔滨今天最新消息
  • 南昌网站建设利润软件库合集软件资料链接
  • 最大免费广告发布平台百度关键词优化首选667seo
  • 游戏搬砖工作室加盟平台什么是优化
  • 宿迁做网站多少钱wordpress采集单篇文章
  • 网站制作工作室24小时接单网站开发培训哪里好
  • 桂林哪里做网站wordpress win调试
  • 做通信毕业设计的网站建设网站 费用吗
  • 360免费建站视频企业网站建设设计任务书
  • 怎么样自己做网站宣传软文范例
  • 做电影网站用什么软件叫什么东莞seo推广机构帖子
  • 石家庄最好的网站建设公司哪家好个人做网站
  • 台州建设局招标投标网站更换网站域名 推广
  • 佛山市南海建设局网站装潢设计专业就业前景
  • 铜川网站设计如何利用源码做网站
  • 15年做那些网站能致富外语人才网官网
  • 网站域名注册商企业查询网站企查查
  • 网站备案 更改ip网站开发青岛
  • 怎么建设自己网站wordpress 分页 增加class
  • nginx 做网站动画设计专业哪个学校比较好
  • 携程的网站建设修改网站默认首页
  • 网站制作模板代码做维修广告效最好是哪个网站吗
  • 镇江网站建设介绍青岛栈桥门票多少钱一张