1.1JVM

1,认识JVM

    Java是一个高级编程语言;*.java文件是使用Java编程语言写出来的源代码程序;*.class是经过JDK编译之后的JVM可识别的Java字节码;JVM是所有Java编写的所有语言的运行基础环境(如果你是厨师  程序就是做出一道道美味 那么JVM就是灶台);

    一个Java程序的执行过程(也就是JVM的执行周期):

    1,使用JDK编译源码产生.class字节码

    2,JVM开始简要此类是否加载  如果未加载就使用ClassLoader加载字节码

    3,开始验证节码  准备 解析字节码

    4,初始化对象

    5,开始main方法

    6,JVM卸载对象  回收内存

 

JVM物理结构:

    1.1JVM_第1张图片



2,字节码

        JVM运行的第一步就是加载字节码(.class file);

        Java文件是程序员编写的源码,用于程序员按照Java语法来表达或者完成莫一目标的语言描述文件;此文件可以供人阅读;但是最终的Java程序都是运行在JVM中,要想JVM识别Java文件必须对Java文件编译处理,转化为.class字节码文件;

        字节码是按照一定的语法来生成的机器码文件;(了解具体语法可以参考 深入解析JVM和JVM规范);


3,JDK(Java develop kit)Java开发工具包

        JDK组成:

            1.1JVM_第2张图片


    JDK包含两部分 一部分是开发API另外一部分是JRE(Java runtime environment Java运行时环境);

    Java开发最常用的就是API的调用,如下就是常用软件包的:

    Java.lang      java.io/nio   java.util    javax.net javax.tools  等等;

    

4,ClassLoader类加载

     类加载主要分为四步:

        1,jvm.dll 初始化JVM

        2,产生 Bootstrap Loader  基础引导加载类;开始加载JAVA_HOME/lib下面的jar包来工作

        3,Bootstrap Loader加载的最后一步是加载 Extended Loader 扩展类加载器; 开始加载JAVA_HOME/lib/ext下面的jar来工作

        4,Extended Loader加载的最后一步是 AppClassLoder 系统类加载器

        5,CustomerClass  Loader   自定义类加载器


类图:

1.1JVM_第3张图片

1.1JVM_第4张图片



注:

    Bootstrap加载器是使用C些的最基础的而加载类;其他加载器都是通过Java来实现的;Java实现的加载类的关系图可以看出   ClassLoader是基础类    SecureCloassLoader 资源类型类加载器  URLClassLoader是地址类型类加载器;

    类加载器都是采用双亲委托制即在子类加载器未加载过此类的时候 会先去委托父类加载器加载此类  如果弗雷未找到才会自己去加载;


5,JVM内存分配

        1.1JVM_第5张图片

6,JVM运行

1.1JVM_第6张图片

        JVM分为 类加载子系统  执行引擎  原生态接口库;


参考文献:《深入解析JVM》

                《JVM规范》

你可能感兴趣的:(1.1JVM)