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

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

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

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

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

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

1.从zip,jar,war包获取

2.从网络中获取

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

4.有其他文件生成 如jsp

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

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

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

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

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

顺便一提

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

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

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

时间: 2024-10-14 01:25:10

深入了解java虚拟机---类加载机制----加载的相关文章

Java虚拟机类加载机制——案例分析

原文出处: 朱小厮 在<Java虚拟机类加载机制>一文中详细阐述了类加载的过程,并举了几个例子进行了简要分析,在文章的最后留了一个悬念给各位,这里来揭开这个悬念.建议先看完<Java虚拟机类加载机制>这篇再来看这个,印象会比较深刻,如若不然,也没什么关系~~下面是程序代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 package jvm.cla

[转]Java虚拟机类加载机制浅谈

Java语言是一种编译后再经过解释器执行的过程, 解释器主要就是如何处理解释Class文件的二进制字节流.JVM主要包含三大核心部分:运行时数据区,类加载器和执行引擎. 虚拟机将描述类的数据从Class文件加载到内存,并对数据进行校验.准备.解析和初始化,最终就会形成可以被虚拟机使用的Java类型,这就是一个虚拟机的类加载机制.Java中的类是动态加载的,只有在运行期间使用到该类的时候,才会将该类加载到内存中,Java依赖于运行期动态加载和动态链接来实现类的动态使用. 一个类的整个生命周期如下:

《深入理解Java虚拟机》- Java虚拟机是如何加载Java类的?

Java虚拟机是如何加载Java类的?  这个问题也就是面试常问到的Java类加载机制.在年初面试百战之后,菜鸟喜鹊也是能把这流程倒背如流啊!但是,也只是字面上的背诵,根本就是像上学时背书考试一样. tonight ! 我们把它映射到实战里,看看如何用代码说明这个流程. ready! go!  ----------------在这之前还是搞点理论吧,不然又要先去百度加载机制流程了. 一.类加载机制(理论部分) 类加载机制有三大过程:加载.链接.初始化.其中链接又细分为验证.准备及解析. Java

学习java虚拟机 - 类加载机制

学习java虚拟机 - 类加载机制  一.是什么 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 在Java语言里面,类型的加载.链接.初始化过程都是在程序运行期间完成的,Java里天生可以动态扩展的语言特性就是依赖运行期间动态加载和动态连接这个特点实现的.例如,如果编写一个面向接口的应用程序,可以等到运行时在制定实际的实现类:用户可以通过Java预定义的和自定义类加载器,让一个本地的应用程序

java虚拟机类加载机制和双亲委派模型

java虚拟机类加载机制:虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的java类型. 类的生命周期是从类被加载到虚拟机内存中,到卸载出内存为止: 类的生命周期: 加载 loading . 验证 verification. 准备 preparation. 解析 resolution. 初始化 initialization. 使用 using. 卸载 unloading 类加载器的层次结构: 双亲委派模型过程: 某个特定的类加载器

Java虚拟机类加载机制

原文出处: 朱小厮 看到这个题目,很多人会觉得我写我的java代码,至于类,JVM爱怎么加载就怎么加载,博主有很长一段时间也是这么认为的.随着编程经验的日积月累,越来越感觉到了解虚拟机相关要领的重要性.闲话不多说,老规矩,先来一段代码吊吊胃口. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 public cla

Java虚拟机 - 类加载机制

[深入Java虚拟机]之四:类加载机制 类加载过程     类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载七个阶段.它们开始的顺序如下图所示: 其中类加载的过程包括了加载.验证.准备.解析.初始化五个阶段.在这五个阶段中,加载.验证.准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或晚期绑定).另外注意这里的几个阶段是按顺序开

JAVA 虚拟机类加载机制和字节码执行引擎

引言 我们知道java代码编译后生成的是字节码,那虚拟机是如何加载这些class字节码文件的呢?加载之后又是如何进行方法调用的呢? 一 类文件结构 无关性基石 java有一个口号叫做一次编写,到处运行.实现这个口号的就是可以运行在不同平台上的虚拟机和与平台无关的字节码.这里要注意的是,虚拟机也是中立的,只要是符合规范的字节码,都可以被虚拟机接受,例如Groovy,JRuby等语言,都会生成符合规范的字节码,然后被虚拟机所运行,虚拟机不关心字节码由哪种语言生成. 类文件结构 class类文件是一组

03 Java 虚拟机是如何加载 Java 类的

Java 引用类型 Java 中的引用类型细分为四种:类,接口,数组类和泛型参数. 因为泛型参数会在编译过程中被擦除,所以 Java 虚拟机实际上只有前三种.数组类是由 Java 虚拟机直接生成的,其他两种则有对应的字节流. 无论是数组类还是其他两种类型,Java 虚拟机都需要对其进行链接和初始化. 加载 加载就是查找字节流,然后据此创建类的过程.数组类由 Java 虚拟机直接生成,其他类则需要 Java 虚拟机借助类加载器来完成查找字节流的过程. 类加载器有很多种,除了启动类加载器以外,其他的