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

5 篇文章 0 订阅
本文详细介绍了JVM的重要性和作用,包括其作为跨平台的虚拟机,一次编写到处运行的特性,以及自动内存管理和垃圾回收功能。文章探讨了JVM的组成部分,如类加载器、运行时数据区、执行引擎和本地库接口,并解析了Java字节码的执行流程。此外,还对比了栈式和寄存器式架构的特点,帮助读者理解JVM的内部工作原理。
摘要由CSDN通过智能技术生成

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架构不同,所以不能设计为基于寄存器的

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

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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值