::我的理解

笔记

就是加载到内存,生成一个代表这个类的java.lang.Class对象(实例)

  1. 通过一个类的全限定名获取定义此类的二进制字节流
  2. 将这个字节流所代表的的静态存储结构转化为方法区的运行时数据结构
  3. 在内存中生成一个代表这个类的 java.lang.Class 对象,作为方法区这个类的各种数据的访问入口

加载class文件的方式

  • 从本地系统中直接加载
  • 通过网络获取,典型场景:Web Applet
  • 从zip压缩文件中读取,成为日后jar、war格式的基础
  • 运行时计算生成,使用最多的是:动态代理技术
  • 由其他文件生成,比如 JSP 应用
  • 从专有数据库提取.class 文件,比较少见
  • 从加密文件中获取,典型的防 Class 文件被反编译的保护措施

如何加载?

使用类加载器进行加载,可以简单理解为类加载器加载不同路径下的class文件。有个机制保证,系统类不会被修改。即双亲委派机制