随笔 - 303  文章 - 0  评论 - 3  阅读 - 15万

JVM初识(jdk17)

  JVMJava Virtual MachineJava虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机与其他虚拟机有何区别?其为解决何种问题而诞生?先看官网上提供的图,如下:

                

   可以很清晰地观察到JVM,JRE,JDK之间的关系及JVM的核心地位(其与操作系统交互,完成自动内存管理):

                

  为什么要在程序和操作系统中间添加一个JVM呢?Java 是一门抽象程度特别高的语言,提供了自动内存管理等一系列的特性。这些特性直接在操作系统上实现是不太可能的,所以就需要 JVM 进行一番转换。

                

  JVM 上承开发语言,下接操作系统,它的中间接口就是字节码。以Hello World代码为例(参考idea 开发工具使用中字节码查看插件的使用):

                 

  字节码如下:

                 

   在字节码文件中可以发现一些指令(类似汇编语言中的指令),比如getstaticldcinvokevirtualreturn 等。这些指令有操作码和操作数组成,叫做opcode。JVM 就是靠解析这些 opcode 和操作数来完成程序的执行的。当我们使用 Java 命令运行 .class 文件的时候,实际上就相当于启动了一个 JVM 进程。

                

  JVM 会翻译这些字节码,它有两种执行方式:

    1、常见的就是解释执行,将 opcode + 操作数翻译成机器代码;

    2、另外一种执行方式就是 JIT,也就是我们常说的即时编译,它会在一定条件下将字节码编译成机器码之后再执行。

 

posted on   池塘里洗澡的鸭子  阅读(14)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示