深入了解java虚拟机---类加载机制----加载

Posted 戴林甫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入了解java虚拟机---类加载机制----加载相关的知识,希望对你有一定的参考价值。

加载是类加载的一个阶段。不要弄混淆了

这一阶段主要做了下面三件事。
1.通过一个类的全限定名获取此类的二进制流

2.将这个二进制流代表的静态存储结构转化为方法区的运行时数据结构

3.在内存中生成java.lang.Class对象,作为访问入口

 

.通过一个类的全限定名获取此类的二进制流:这一步说的不明确,要怎样获取呢。java虚拟机没有指明。所以就产生了很多种获取方法

1.从zip,jar,war包获取

2.从网络中获取

3.运行时生成,如动态代理

4.有其他文件生成 如jsp

5.从数据库中获取,这我还没理解。先放着吧

 

加载分为加载非数组类和数组类:

加载非数组类,可以使用系统的类加载器,也可以自定义类加载器(即重写loadClass()方法)

 

加载数组类,数组的组件类型时引用类的采用递归加载这个组件类型。数组在该类的类加载器的类名称空间上被标识

数组的组件类型不是引用类(如int[]),那么数组就与引导类加载器关联

顺便一提

数组类的可见性和组件类型可见性一致,组件类型不是引用类型就直接默认为public

 

加载完成后,二进制字节流存储在方法区中,然后堆中生成Java.lang.Class对象。

最后说下加载和连接部分内容是交叉进行的,但是加载还是在连接前面

以上是关于深入了解java虚拟机---类加载机制----加载的主要内容,如果未能解决你的问题,请参考以下文章

深入了解java虚拟机---类加载机制----初始化阶段

深入了解JVM——虚拟机类加载机制

深入了解JVM——虚拟机类加载机制

虚拟机类加载机制——类加载时机

《深入理解Java虚拟机》-----第7章 虚拟机类加载机制——Java高级开发必须懂的

深入理解Java虚拟机类加载机制