小白学习JVM(一)--概述和模型

文章目录

    • 为什么学习JVM
      • 作用一:面试需要
      • 作用二:中高等程序员的必备技能
    • VM是什么
    • JVM的作用
      • 特点:
    • JVM的位置
      • JVM是运行在操作系统之上的,与硬件没有直接的交互.
    • JVM的整体组成
      • 简单示意图:
      • 详细示意图
    • 各个组成的用途
    • java的执行流程
    • JVM架构模型
      • 基于栈式架构的特点
      • 基于寄存器式架构特点

为什么学习JVM

作用一:面试需要

​ 不懂JVM可以写出优质的代码,也可以做出优秀的项目,那么为什么要学习JVM?因为面试官最喜欢问的就是关于JVM的东西

作用二:中高等程序员的必备技能

​ 可以项目管理,以及性能优化

VM是什么

​ VM就是Virtual Machine,虚拟机,他是一款软件,用来执行一系列虚拟计算机指令.可以将虚拟机分为系统虚拟机和程序虚拟机.

​ 我们耳熟能详的VMware就是系统虚拟机,提供可运行完整操作系统的软件平台.

​ 程序虚拟机典型的代表就是java虚拟机,在java虚拟机中执行的指令我们成为java字节码指令.

​ java技术的核心就是java虚拟机,因为所有的java程序都运行在java虚拟机内部.

JVM的作用

小白学习JVM(一)--概述和模型_第1张图片

​ java虚拟就是二进制字节码的运行环境,负责装在字节码到其内部,解释/编译为对应平台的机器码指令执行,每一条java指令,java虚拟机都有详细定义.怎么处理,结果放哪都有定义

特点:

  1. 一次编译到处运行
  2. 自动内存管理
  3. 自动垃圾回收功能

如今的JVM不仅可执行java字节码文件.其他的语言编译的字节码文件也可以在jvm上运行,是一个跨平台语言

JVM的位置

小白学习JVM(一)--概述和模型_第2张图片

JVM是运行在操作系统之上的,与硬件没有直接的交互.

小白学习JVM(一)--概述和模型_第3张图片

JVM的整体组成

  1. 类加载器ClassLoader
  2. 运行时数据区(Runtime Data Area)
  3. 执行引擎(Execution Engine)
  4. 本地库接口(Native Interface)

简单示意图:

小白学习JVM(一)--概述和模型_第4张图片

详细示意图

小白学习JVM(一)--概述和模型_第5张图片

各个组成的用途

​ 先将.java文件转换为.class文件,jvm将字节码文件---------类加载器-------->内存的运行时数据区(由于字节码不能直接交给操作系统执行)----------执行引擎---------->字节码转为底层系统指令----------->CPU(这个过程需要调用本地库接口)

​ 运行时数据区中的是Heap模块

java的执行流程

小白学习JVM(一)--概述和模型_第6张图片

小白学习JVM(一)--概述和模型_第7张图片

JVM架构模型

​ java编译器输入的指令流给予一种给予栈的指令集架构,另一种是基于寄存器的指令集架构

基于栈式架构的特点

  1. 设计实现简单,适用于资源受限的系统
  2. 使用领地址指令方式分配,执行过程依赖于操作栈,指令集更小,编译器容易实现
  3. 不需要硬件支持,可移植性好,更好实现跨平台

基于寄存器式架构特点

  1. 指令完全依赖于硬件,可移植性差
  2. 性能好,效率高
  3. 使用的指令更少

例如:
小白学习JVM(一)--概述和模型_第8张图片

javap -v class//将.class文件反编译为指令集

由于跨平台设计,java指令集都是根据栈设计,不同cpu架构不同,所以不能设计为基于寄存器的

优点:跨平台,指令集小,编译器容易实现

缺点:性能低,同样的操作需要更多的指令

JVM组合拳往期文章

  • 小白学习JVM(一)–概述和模型
  • 小白学习JVM(二)–类加载和双亲委派机制

你可能感兴趣的:(JAVA,JVM,新星计划,java,jvm)