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