JVM-类加载

来源:互联网 发布:sql 包含几个字符 编辑:程序博客网 时间:2024/06/05 12:39

类加载:类加载机制,类加载器
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
类加载机制包括:类加载的时机、类加载的过程
类加载器包括:类加载器的种类,双亲委派机制
ps:类加载器只是 类加载5个阶段(加载、验证、准备、解析、初始化)
中的加载阶段而已
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第一部分:
类加载的过程:加载、验证、准备、解析、初始化
加载阶段的时机:很多内容

验证阶段:很多内容,很重要,但不是必须的。
准备阶段:要学习的内容较少。就是比如,变量值都设置为0,真正的初始化发生在 初
始化阶段
解析阶段:就是 符号引用,直接引用,找到方法的位置

初始化阶段:

(未完待续,还有很多不记得了)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二部分:
类加载器的种类:
从java虚拟机角度来说,分为两类:一类是启动类加载器(BootStrap ClassLoader),是C++语言写的,放在虚拟机外部。另一类即使所有其他的类加载器,它们都是java写的,并且都继承了java.lang.ClassLoader类

从用户程序员角度来说,可以分为更加细致些。程序员经常会用到的三类类加载器:
启动类加载器(BootStrap-ClassLoader)、扩展类加载器(Extension-ClassLoader)、应用程序类加载器(Application-ClassLoader)

双亲委派模型:
各种类加载器组织起来的层次关系,叫做双亲委派模型

双亲委派机制:
就是当要加载类的时候,(除了BootStrap ClassLoader)所有的类加载器都不会首先自己尝试去加载,而是传递给上一层父类加载器,父类加载器做同样的动作,直到加载请求传递到 启动类加载器。如果父类加载器不能完成加载,子类才会尝试去加载。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
参考书目:
《深入理解java虚拟机》
ps:本书第6章讲述了 java程序是如何存储的
本书第7章讲述了 java程序是如何载入(创建)的
本书第8章讲述了如何执行的问题,虚拟机如何执行定义在Class文件中的字节码

ps:字节码文件,是方法的执行体,是在java栈的栈帧中运行的??

ps: java文件-》编译成Class文件,然后Class中编译的类的信息,静态常量,变量啥的,到时候加载的时候,直接放在 JVM内存的方法区即可,而局部变量和方法体,则放在运行时的java栈的栈帧中即可。

0 0