类加载器 ClassLoader
虚拟机团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机的外部去实现,以便让应用程序自己决定如何去获取所需要的类。
实现这个动作的代码模块称为“类加载器”。
问题:这个动作放到虚拟机的外部实现,是如何放到虚拟机外部实现的, 什么样是虚拟机外部
类从被加载到虚拟机内存中开始,到卸载出内存为止,整个什么周期包括:加载(Loading),验证(Verification),准备(Preparation),解析(Resolution),初始化(Initialization),使用(Using)和卸载(UNloading)
“加载”是“类加载”(Class Loading)过程的一个阶段,在加载阶段,虚拟机需要完成以下3个事情:
1)通过一个类的全限定名来获取定义此类的二进制字节流。
2)将这个字节流所代表的静态存储结构转换为方法区的运行时数据结构。(虚拟机外部的二进制字节流按照虚拟机所需的格式存储在方法区之中,方法区中的数据存储格式由虚拟机实现自行定义,虚拟机规范未规定此区域的具体数据结构)
3)在内存中生成一个代表这个类的java.lang.Class对象