一、ClassLoader 作用

ClassLoader 是用来加载 Class 的。它负责将 Class 的字节码形式转换成内存形式的 Class 对象。字节码可以来自于磁盘文件 *.class,也可以是 jar 包里的 *.class,也可以来自远程服务器提供的字节流,字节码的本质就是一个字节数组 []byte,它有特定的复杂的内部格式。

有很多字节码加密技术就是依靠定制 ClassLoader 来实现的。先使用工具对字节码文件进行加密,运行时使用定制的 ClassLoader 先解密文件内容再加载这些解密后的字节码。每个 Class 对象的内部都有一个 classLoader 字段来标识自己是由哪个 ClassLoader 加载的。ClassLoader 就像一个容器,里面装了很多已经加载的 Class 对象

class Class<T> {...private final ClassLoader classLoader;...
}

二、延迟加载

JVM 运行并不是一次性加载所需要的全部类的,它是按需加载,也就是延迟加载。程序在运行的过程中会逐渐遇到很多不认识的新类,这时候就会调用 ClassLoader 来加载这些类。加载完成后

Java基础学习总结(137)——Java ClassLoader再总结相关推荐

  1. java基础学习总结一(java语言发展历史、jdk的下载安装以及配置环境变量)

    最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会 直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有"01 ...

  2. Java基础学习笔记三 Java基础语法

    Scanner类 Scanner类属于引用数据类型,先了解下引用数据类型. 引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. 数据类型 变量名 ...

  3. Java基础学习总结(50)——Java事务处理总结

    一.什么是Java事务 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性(isol ...

  4. java中哪些可以私有化_《Java基础学习笔记》JAVA修饰符之私有化(Private)

    1,什么是private修饰符? private是权限修饰符,用于修饰类中的成员(成员变量,成员函数). private修饰后的成员只在本类中有效. /* 例: * 将age私有化以后,类以外即使建立 ...

  5. 《Java基础学习笔记》JAVA面向对象之封装

    1,封装,是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 2,好外:        a)将变化隔离.        b)便于使用.        c)提高重用性.        d)提高安全性 ...

  6. Java 基础学习-Java语言概述

    Java 基础学习 第一章 Java语言概述 回顾java基础知识,进行整理记录. 文章目录 Java 基础学习 前言 一. Java语言发展史(了解) 二.Java语言跨平台原理(理解) 三.JRE ...

  7. Java基础学习:尚硅谷项目三 开发团队调度软件

    Java基础学习:尚硅谷项目三 开发团队调度软件 一.软件功能与结构设计 1. 软件功能 该软件实现以下功能: 软件启动时,根据给定的数据创建公司部分成员列表(数组) 根据菜单提示,基于现有的公司成员 ...

  8. 尚学堂JAVA基础学习笔记_2/2

    尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...

  9. Java基础学习——第十四章 网络编程

    Java基础学习--第十四章 网络编程 一.网络编程概述 计算机网络: 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地互相传递信 ...

  10. Java基础学习(9)

    Java基础学习 一.常用方法(API) 1.1 Math 1.2 System 1.3 Runtime 1. 4 .object 1.5 Objects 1.6 BigInteger BigInte ...

最新文章

  1. eclipse 新建maven项目报错Could not resolve archetype org.apache.maven.archetype修改配置
  2. android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法
  3. 交换与路由技术课程期末上机测试题目一
  4. $#,$@,$0,$1,$2,$*,$$,$?,${}
  5. (八)nodejs循序渐进-事件驱动(进阶篇)
  6. 订单编号,递增且不连续(php版)
  7. eclipse项目两个红点
  8. bash sbin/start-yarn.sh出现localhost: rcmd: socket: Permission denied
  9. 【2019.7.15】
  10. javax.servlet.http.HttpServletResponse.setContentLengthLong(J)V,maven项目报错!!无法访问webapp下的文件,完美解决方案
  11. 使用AMOS图形建立和检测模型(3)
  12. 淮安颜老师计算机,颜老师_以老师为话题的作文750字_独木帆作文网
  13. java one_javaone是什么意思
  14. Python趣味脚本,做一个简单的抽奖刮刮卡
  15. JAVA:实现Blowfish区块加密算法(附完整源码)
  16. 怎么获取微信公众号的音频视频
  17. docker导入镜像报错:open /var/lib/docker/tmp/docker-import-970689518/bin/json: no such file or
  18. Python绘制折线图、散点图
  19. dell服务器装系统按哪个键,bios设置 dell笔记本重装系统按哪个键进入bios
  20. 一起感受迪士尼乐园的奇幻魔力 高德地图迪士尼圆梦之旅圆满成功

热门文章

  1. 奖励名单表格模板_“我用一套表格,解决了孩子的拖延症,一路用到小学高年级!”...
  2. linux 网卡驱动 优化,Linux多核环境网卡驱动优化研究①.PDF
  3. license是什么_云数据库时代,AWS凭什么执牛耳?
  4. alphazawgyiversion3 安装口令_车窗晴雨挡到底有着什么用?为什么那么多人安装?酷斯特玩车...
  5. logistic回归分析优点_逻辑回归的简单介绍
  6. java .class 实例对象_通过Class类获取对象(实例讲解)
  7. ubuntu安装python_常用linux指令 ubuntu环境pytorch配置
  8. 视觉SLAM——ORB特征
  9. C++之static关键字探究
  10. android用来显示界面的组件,Android 自学之基本界面组件(上)