JVM学习1

  1. JVM整体结构
    1. Java所使用的虚拟机默认为:HotSpot VM,其目前是市面上高性能虚拟机的代表作之一,采用解释器与即时编译器并存的架构
    2. JVM学习1
      1. 类加载器子系统(Class Loader):负责class文件的加载。将字节码文件加载到内存中,生成大的class对象,这个过程中会涉及到加载、链接、初始化等过程。
      2. 方法区:存储类的方法代码、变量名、返回值等信息。其可被多线程共享。
      3. 堆:存放所有new出来的对象,可被多线程共享。
      4. 虚拟机栈:存放基本类型的变量数据和对象的引用,用于描述java方法执行的内存模型。
      5. 本地方法栈:服务的对象是JVM执行的native方法。
      6. 程序计数器:是一个记录着当前线程所执行的字节码的行号指示器
      7. 执行引擎:由解释器、JIT即时编译器、垃圾回收器组成,高级语言到机器语言的翻译者。
  2. Java代码执行流程
    1. 流程:java程序-->字节码文件(.class)-->类的加载-->字节码校验器-->翻译字节码-->JIT编译器-->操作系统
    2. 主流编译器采用的是翻译字节码(解释执行)和JIT编译器(编译执行)并存
    3. 解释字节码:保证响应时间,对字节码逐行解释执行
    4. JIT编译器:即二次编译,保证程序的性能。
  3. JVM架构模型
    1. 现存的指令集架构主要分为两种:基于栈的指令集架构、基于寄存器的指令集架构。HotSpot采用的是基于栈的指令集架构,其只含有PC寄存器,不含有其他寄存器。
  4. JVM的生命周期:
    1. 启动:Java虚拟机的启动时通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。
    2. 执行:程序开始时他才开始,程序结束时他才结束,执行一个java程序时,真正在执行的是一个java虚拟机的进程
    3. 退出