当程序主动使用某个类时,如果该类还未被加载到内存中,系统会通过加载,连接,初始化三个步骤来对该类进行初始化,JVM将会连续完成这三个步骤,也把这三个步骤统称为类加载或类初始化;

类加载指的是将类Class文件读入内存,并为之创建一个Java.lang.Class对象,也就是说程序使用任何类时,系统都会为之建立一个java.lang.Class对象

类是某一类对象的抽象,类是概念层次的东西,但类也是一种对象,每个类是一批具有相同特征的对象的抽象,而系统中所有类,它们实际上也是对象,都是java.lang.Class的实例;

类的加载由类加载器完成,类加载器通常由JVM提供,这些类加载器也是所有程序运行的基础,JVM提供的这些类加载器通常被称为系统类加载器,开发者也可以通过继承ClassLoader基类来创建自己的类加载器;

通过使用不同的类加载器,可以从不同来源加载类的二进制数据,通常有如下几种来源:

1、从本地文件系统来加载Class文件,这是大部分实例程序的类加载方式;

2、从jar包中加载class文件,如JDBC编程时用到的数据库驱动类就是放在jar文件中,JVM可以从jar文件中直接加载该Class文件;

3、通过网络加载class文件;

4、把一个java源文件动态编译,并执行加载。

Java 基础——类的加载相关推荐

  1. Java虚拟机 —— 类的加载机制

    我们知道class文件中存储了类的描述信息和各种细节的数据,在运行Java程序时,虚拟机需要先将类的这些数据加载到内存中,并经过校验.转换.解析和初始化过后,最终形成可以直接使用的Java类型. 类从 ...

  2. Java虚拟机中 类的加载过程

    Java中 类的加载过程 例如下面的一段简单的代码 public class HelloWorld {public static void main(String[] args) {System.ou ...

  3. Java类的加载过程,类加载器,双亲委派原则

    Java一个类的加载过程: 1.加载 a.jvm会根据类名找到对应的类文件 b.进行文件内容读取 2.链接 链接主要是验证类中数据是否合法,然后把刚加载进来的类和其他类的关系建立清楚,主要有以下几个步 ...

  4. 透过现象看本质:Java类动态加载和热替换

    摘要:本文主要介绍类加载器.自定义类加载器及类的加载和卸载等内容,并举例介绍了Java类的热替换. 最近,遇到了两个和Java类的加载和卸载相关的问题: 1) 是一道关于Java的判断题:一个类被首次 ...

  5. Cathy学习Java——反射和类的加载

    工厂设计模式 工厂方法模式 概述 工厂:就是生产特点产品的 实现方式 1>创建一个抽象工厂类,声明抽象方法 2>写一个具体抽象工厂类的子类,由子类负责对象的创建 优点:后期容易维护,增强了 ...

  6. Java类的加载及父类子类加载顺序

    点击 Mr.绵羊的知识星球 解锁更多优质文章. 目录 一.类的加载 1. 类加载 2. 类加载器 二.父类和子类加载顺序 1. 案例(代码) 一.类的加载 1. 类加载 当程序要使用某些类时,如果该类 ...

  7. Java类的加载过程详解 面试高频!!!值得收藏!!!

    受多种情况的影响,又开始看JVM 方面的知识. 1.Java 实在过于内卷,没法不往深了学. 2.面试题问的多,被迫学习. 3.纯粹的好奇. 很喜欢一句话: 八小时内谋生活,八小时外谋发展. 望别日与 ...

  8. java加载并运行虚拟机_《深入理解Java虚拟机》- Java虚拟机是如何加载Java类的?...

    Java虚拟机是如何加载Java类的?  这个问题也就是面试常问到的Java类加载机制.在年初面试百战之后,菜鸟喜鹊也是能把这流程倒背如流啊!但是,也只是字面上的背诵,根本就是像上学时背书考试一样. ...

  9. java 类的加载、连接和初始化

    JVM和类 调用Java命令运行Java程序时,该命令将会启动一条Java虚拟机进程,不管该Java程序启动了多少条线程,创建了多少个变量,它们都处于该Java虚拟机进程里,共享该JVM进程的内存区. ...

最新文章

  1. Mac下PHP7.1+Nginx安装和配置
  2. sysctl -p 重新加载文件/etc/sysctl.conf -a 所有参数 -w 临时指定
  3. Spring JPA 中的Repository体系
  4. Java调用动态库 缺点,Java调用动态库所需要关心的有关问题
  5. 基于DEM,Lumion和WorldMachine的地形三维可视化
  6. 2007年9月c语言真题及答案,1997年9月二级C语言笔试真题及答案.doc
  7. 计算机应用基础 教学工作总结,四年级下期计算机教学工作总结(共3篇)
  8. 20190301 小中大
  9. 竹子的精神高山流水,赞美竹子的句子,竹子散文
  10. pandas 公益学习 综合练习与学习总结
  11. AD19滴泪添加与删除
  12. Postgresql12+Pgpool-ii 4.1高可用集群
  13. “使用区块链进行安全可信的电子医疗记录共享”外文翻译——2019年4月份
  14. 温度滞回程序C语言,间隙式粘滞阻尼器温度变化对滞回性能影响的研究
  15. 改编名著成风 麒麟游戏将研发《红楼梦》网游
  16. DTLN网络模型学习
  17. 【SVM回归预测】布谷鸟搜索算法优化SVM回归预测【含Matlab源码 1525期】
  18. 利用DOS命令压缩、解压文件
  19. HP V3500简要拆机流程
  20. 手机看PDF电子书如何设置左右翻页

热门文章

  1. keepalived实现高可用nginx反向代理的简单案例
  2. 集算器访问HTTP数据的代码示例
  3. oracle那些基本知识
  4. 什么是GraphQL? 普通神话被揭穿。
  5. angular 动画_如何在Angular 6中使用动画
  6. 首席技术执行官_如何在几分钟内找到任何首席执行官的电子邮件地址
  7. 阿里的事前验尸_(不太完全)100天的代码-验尸
  8. 为什么我们需要使用Pandas新字符串Dtype代替文本数据对象
  9. 用clipboard.js实现纯JS复制文本到剪切板
  10. Nginx的安装(笔记)