一、类的加载过程将类的字节码文件加载到Java虚拟机中进行执行。
1.通过一个类的全限定名来获取定义此类的二进制流字节码文件(如zip 包、网络、运算生成、JSP 生成、数据库读取等)。
2.将这个字节流所代表的静态存储结构(如常量池、字段、方法等)转化为方法区的运行时数据结构。
3.在内存中生成一个代表这个类的 java.lang.Class 对象,作为这个类的各种数据(如字段、方法等)的访问入口。
二、数组类加载的特殊性:数组类本身不通过类加载器创建,它是由 Java 虚拟机直接创建的。但数组类与类加载器仍然有很密切的关系,因为数组类的元素类型最终是要靠类加载器去创建加载的。
数组创建过程如下:
1.如果数组的组件类型(即数组的元素类型)是引用类型,那就递归采用类加载器进行加载。
2.如果数组的组件类型(即数组的元素类型)不是引用类型,Java 虚拟机会把数组标记为引导类加载器加载。
3.数组类的可见性与它的组件类型(即数组的元素类型)的可见性一致,如果组件类型不是引用类型,那数组类的可见性将默认为 public。
三、内存中的 java.lang.Class 对象存在于方法区中,作为应用程序中访问方法区中这些类型数据的外部接口。
加载阶段与链接(验证、准备、解析)阶段的部分内容是交叉进行的,但是开始时间保持先后顺序。
微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。
欢迎关注。助您在编程路上越走越好!