eIT.com.cn 2023/3/17 18:38:16 阅读 3 次
类加载器类加载的过程类加载器的功能将.class文件【物理文件:在硬盘中】加载到Java虚拟机的内存中【搬用工】。 类加载的时机情况分析://1,当创建Fu对象的时候【Fu.class会被加载到Java虚拟机】 Fu f = new Fu(); //2,调用类的静态方法【Fu.class会被加载到Java虚拟机】(Fu.class由于在第一步已加载到虚拟机,所以在这一步不会被加载) Fu.showMessage(); //3访问类的静态成员变量或者给类的静态成员变量赋值【Fu.class会被加载到Java虚拟机】 String message = Fu.message; Fu.message = "Hello Java"; //4,创建子类对象的时候,Fu类是Zi类的父类【Fu.class会被加载到Java虚拟机】 //5,直接基于java.exe命令运行某个类【ClassLoaderDemo1.class会被加载到虚拟机】 //6,基于反射的方式强制加载到某个类到Java虚拟机中【可以指定要加载的类的全限定名进行加载(无论是否会用到)】 Class.forName("com.yaoyao.classLoader.Fu");//【Fu.class会被加载Java虚拟机】 ★:用到就加载,不用不加载,除非反射强加载 ★类加载的过程细讲类加载的步骤:(1)加载:通过创建一个字节输入流读取要加载的类.class文件到内存中,并且根据所读取到的所有信息生成一个【★.Class对象】。 Class对象中保存了类的所有信息(构造方法+成员变量+成员方法)以及更加细致的内容(继承谁/实行谁/构造方法的权限修饰符/成员变量的权限修饰符)。 (2)验证:验证读取到的信息是否满足Java虚拟机的规范,不影响Java虚拟机的安全。 (3)准备:给类中的静态成员变量完成内存空间的分配,无论静态变量是否有初始化值,在准备这一步只给【默认值】。 (4)解析:如果当前要加载的类中要用到其他类,将其他类也一并加载。 (5)初始化:给类的静态变量完成初始化,如果有静态代码块也在这个步骤执行。 类加载器的分类启动类加载器(Bootstrap ClassLoader):虚拟机内置的类加载器。 平台类加载器(Platform ClassLoader):负责加载JDK中的一些特殊模块。 系统类加载器(System ClassLoader):负责加载用户路径上所指定的类库。 双亲委派模型是Java为了可以保证每一个类加载器都可以加载到自己对应的内容而设计的机制。在这种机制下没有直接继承 但有间接继承 |
• 一文快速入门任务调度框架-Quartz (2023/3/31 23:24:56)
• 基本概念 (2023/3/31 23:24:56)
• Spring(Ioc和Bean的作用域) (2023/3/31 21:03:29)
• Java面向对象 (2023/3/31 18:48:15)
• 【深入浅出 Yarn 架构与实现】6-1 NodeManager 功能概述 (2023/3/31 18:48:15)
• 提供一款局域网聊天小工具,对接了chatGPT3.5 (2023/3/31 17:41:32)
• 你还在手写 join 联表查询?MyBatis-Plus 这样写太香了! (2023/3/31 16:33:29)
• JSON多层嵌套复杂结构数据扁平化处理转为行列数据 (2023/3/31 11:49:51)
• 全网最全的权限系统设计方案,不接受反驳! (2023/3/31 11:49:51)
• Spring AOP官方文档学习笔记(一)之AOP概述 (2023/3/30 23:52:12)
C标准库参考 | Prim@Hosting | Hadoop | WordPress | Windows2000安全 | Microsoft Visio | Apache Flume | 谷歌地图 | Selenium | 局域网 | 声卡显卡 | Java ANT | jQuery | Eclipse | Excel数据透视表 | jBPM5 | 嵌入式系统 | 服务器应用 | 站长故事 | Director
合作媒体与友情链接 |
生活常识小贴士 | 软件开发教程 | 智慧城市生活网 | 息县通生活服务[移动版] | 息县商圈[移动版] | 美食菜谱 |
健康养生 | 法律知识 | 科技频道 | 电影影讯 | 留学考研学习 | 星座生肖|解梦说梦 |
关于我们 | 联系我们 | 合作媒体 | 使用条款 | 隐私权声明 | 版权声明 |
Copyright © 2023 eIT.com.cn. All Rights Reserved. | 豫ICP备2022012332号 |