小白学习JVM--概述和模型

Posted 肖帆咪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小白学习JVM--概述和模型相关的知识,希望对你有一定的参考价值。

为什么学习JVM

作用一:面试需要

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

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

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

VM是什么

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

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

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

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

JVM的作用

在这里插入图片描述

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

特点:

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

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

JVM的位置

在这里插入图片描述

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

在这里插入图片描述

JVM的整体组成

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

简单示意图:

在这里插入图片描述

详细示意图

在这里插入图片描述

各个组成的用途

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

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

java的执行流程

在这里插入图片描述

在这里插入图片描述

JVM架构模型

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

基于栈式架构的特点

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

基于寄存器式架构特点

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

例如:
在这里插入图片描述

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

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

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

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

以上是关于小白学习JVM--概述和模型的主要内容,如果未能解决你的问题,请参考以下文章

JVM学习--垃圾回收机制

JVM系列 从一到掌握JVM系列之JVM 概述篇

JVM学习--JVM本地方法和执行引擎

详解Jvm内存结构

详解Jvm内存结构

详解Jvm内存结构