zoukankan      html  css  js  c++  java
  • Java虚拟机JVM学习01 流程概述

    Java虚拟机与程序的生命周期

      一个运行时的Java虚拟机(JVM)负责运行一个Java程序。

      当启动一个Java程序时,一个虚拟机实例诞生;当程序关闭退出,这个虚拟机实例也就随之消亡。

      如果在同一台计算机上同时运行多个Java程序,将得到多个Java虚拟机实例,每个Java程序都运行于它自己的Java虚拟机实例中。

      在如下几种情况下,Java虚拟机将结束生命周期:

      1.执行了System.exit()方法

      2.程序正常执行结束

      3.程序在执行过程中遇到了异常或错误而异常终止

      4.由于操作系统出现错误而导致Java虚拟机进程终止

    类加载器ClassLoader

      .java文件编译生成.class文件,需要装载到内存里面执行,装载到内存里面这个事情就是由类加载器完成的。

    程序执行之前,会进行类的加载、连接与初始化

      1.加载

      查找并加载类的二进制数据。  

      参见:Java虚拟机JVM学习02 类的加载概述

      2.连接

      连接又分为三个步骤:

      验证:确保被加载类的正确性。

      即验证class文件是否符合JVM的要求。

      准备:为类的静态变量分配内存,并将其初始化为默认值

      解析把类中的符号引用转换为直接引用。

      参见:Java虚拟机JVM学习03 连接过程:验证、准备、解析

      3.初始化

      为类的静态变量赋予正确的初始值,即在程序里为静态变量指定的初始值,或静态代码块中的赋值操作。

      静态代码块是从上到下顺序执行的,可以对一个静态变量多次赋值,最后的结果为静态变量的初始值。

       参见:Java虚拟机JVM学习04 类的初始化

    参考资料

      圣思园张龙老师Java SE系列视频教程。

     博文源于:

  • 相关阅读:
    Git/GitHub使用技巧
    《暗时间》第一遍读书心得整理
    学习方法摘要总结
    Py爬虫项目
    2018年6月12日
    狐狸坑蛋糕
    Codeforces 371C Hanburgers
    【别忘咯】 关于运算优先级
    【noip 2009】 乌龟棋 记忆化搜索&动规
    【Openjudge】 算24
  • 原文地址:https://www.cnblogs.com/hqlong/p/6814345.html
Copyright © 2011-2022 走看看