JVM体系
》类加载机制
》编译与反编译
》JVM内存结构
》JVM内存模型
》垃圾回收
》JVM参数及调优
》JVM对象模型
类加载机制:将编译产生的字节码文件加载入内存中,给虚拟机使用。(Classloader:类加载器)
类加载器的类别:
BootstrapClassLoader:启动类加载器
特征:由c++语言实现
加载的类库有<java_HOME>\lib和-Xbootclass参数指定的路径
ExtensionClassLoader :扩展类加载器
特征:由java的sum.misc.Lanucher$ExtClassLoader实现
加载的类库:位于<java_Home>\lib\ext和java.ext.dirs路径的类库
AppClassLoader:应用程序类加载器
特征:由java的sum.misc.Lanucher$AppClassLoader实现
也叫系统类加载器,是默认的加载器
加载的类库:负责加载ClassPath指定类库加载过程:加载——链接(验证,准备,解析)——初始化
加载:对代码中出现的类进行加载,就是寻找import的类,如果可以找到就生成对象,如果没有找到,就报错ClassNotFound
链接:在找到定义的类以及,通过层层筛选,检测,然后变成自己的
验证:根据语法和语义进行class的检测
准备:对变量分配内存,如果不是非final,则将该变量堆值设置为0,对static进行初始化
解析:最后在检查是否加载了其他 类/接口等,是否可以找到引用接口
初始化:在main执行之前,将static的变量进行递归初始化,然后将类存进内存中,检查类对应的接口等是否可以使用对象创建的过程:类加载检查——分配内存——初始化零值——设置对象头——执行init()方法
类加载检查:检查new提交的参数是否可以在运行常量池中找到对应的符号引用
分配内存:给对象找空间
指针碰撞:堆空间规整
空闲列表:堆内存步规整
初始化零值:将找到的空间初始化设置对象头:
执行init():把对象按照程序执行进行初始化
执行引擎(作用):主要是执行包在装载类中对方法中指令 》 执行方法双亲委派模型:是类加载中的一个机制,主要是组织类加载之间的关系;
当子类加载器要处理事情的时候,会先询问父类加载器,看父类记载器是否可以执行,自己尽量的“偷懒”
类加载器之间的关系(左子有父)
自定义类》应用程序类》扩展类》启动类 加入的时间:JDK1.2

京公网安备 11010502036488号