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