本文章讨论:类装载子系统,涉及的加载过程如下:
1:加载阶段
2:链接阶段
3:初始化阶段
下面详细介绍该三个阶段:
加载阶段--loading
1:通过一个类的全限定名获取定义此类的二进制字节流
2:将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构
3:在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据访问入口
补充:加载 .class 文件的方式:
- 从本地系统中直接获取
- 通过网络获取,典型场景:Web Applet
- 从zip压缩包中读取、成为日后从jar、war格式的基础
- 运行时计算生成,使用最多的是:动态代理技术
- 由其他文件生成,典型应用:JSP应用(JSP内可以写java代码)
- 从专用数据库中提取 .class 文件,比较少见
- 从加密文件中获取,典型的防Class文件类反编译的保护措施