JVM第一篇 认识java虚拟机

这篇具有很好参考价值的文章主要介绍了JVM第一篇 认识java虚拟机。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 什么是java虚拟机

2. java虚拟机分类

2.1. 商用虚拟机

2.2. 嵌入式虚拟机

3.java虚拟机架构

4.java虚拟机运行过程


1. 什么是java虚拟机

       传统意义上的虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的,是操作系统级别的虚拟机。Java虚拟机是一种程序虚拟机,有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

2. java虚拟机分类

2.1. 商用虚拟机

(1)Sun HotSpot
该虚拟机性能优越,是 sun JDK1.3 及以后所有 sun JDK 版本默认的虚拟机,使用最为广泛,一般默认所说的虚拟机就是该虚拟机。
(2)BEA  JRockit
JRockit 虚拟机是 BEA 公司于 2002 年从 Appeal Virtual Machines 收购获得的虚拟机。
它是一款面向服务器硬件和服务端使用场景高度优化过得虚拟机,曾经号称是“世界上速度最快的虚拟机”。
由于专注于服务端应用,它的内部不包含解析器的实现,全部代码都靠即时编译器编译后执行。
(3)IBM J9
J9 虚拟机是 IBM 公司单独开发的高性能虚拟机,它并不独立出售,而是作为 IBM 公司各种产品的执行平台,IBM 把它定义为一个可以适应从嵌入式设备到大型企业级应用的、高可移植性的Java运行平台。
(4)Sun Classic 
这个虚拟机很原始,是 JDK1.0 时代使用的Java虚拟机,是各种虚拟机的鼻祖,它的内部不存在即时编译器,只能使用纯解释的方式运行。
(5)Sun Exact 
这是 Sun 公司在 HotSpot 之外的另一个虚拟机,在 JDK1.2 时代曾短暂的投入过商用,它和 HotSpot 同时开发,但最终被 HotSpot 取代。
(6)Apache Harmony 
Harmony 是 Apache 软件基金会主导的、开源的、独立的、实际兼容与 JDK1.5 和 JDK1.6的虚拟机实现,
它间接催生了 Google Android 平台的 Dalvik 虚拟机,Android 的影响力现在有多大不用多说,目前已经是最成功的的数码设备通用平台。
但是由于它的 TCK 授权问题,直接导致 Apache 与 Oracle 的决裂,从而退出了 JCP 组成,这是近代 Java 阵营遇到的最严重的分裂危机。

2.2. 嵌入式虚拟机

(1)Dalvik
Dalvik 虚拟机是 Google 等厂商合作开发的 Android 移动设备平台的核心组成部分之一,它执行 dex(Dalvik Executable) 文件而不是 class 文件,
使用寄存器架构而不是栈架构,但是它的开发体系与Java有着千丝万缕的关系,可以直接使用大部分的 Java API、dex 文件可以直接从class文件转化而来。
并且在 Android 2.2 中提供了即时编译器的实现,性能大大的提高。

(2)KVM
在 Android、IOS 等智能手机操作系统出现之前,曾广泛应用于手机平台的一种虚拟机。

(3)CDC/CLDC HotSpot
CDC和 CLDC HotSpot 分别是 Sun 针对高端嵌入式设备和中低端嵌入式设备的虚拟机,用来代替 KVM。
 

3.java虚拟机架构

JVM的架构分为三个部分:类加载器、运行时数据区和执行引擎。
(1) 类加载器类加载器是JVM的重要组成部分,它负责将Java类加载到JVM中。类加载器将Java类文件加载到内存中,并将其转换为JVM可以理解的格式。类加载器分为三个层次:启动类加载器、扩展类加载器和应用程序类加载器。启动类加载器是JVM的一部分,它负责加载Java核心类库,如java.lang和java.util等。扩展类加载器负责加载Java扩展类库,如JDBC驱动程序和Java Servlet API等。应用程序类加载器负责加载应用程序的类文件。
(2) 运行时数据区运行时数据区是JVM的内存管理系统,它分为五个部分:方法区、堆、虚拟机栈、本地方法栈和程序计数器。方法区存储类的结构信息、常量池、静态变量和方法代码等。堆是Java程序运行时的内存区域,用于存储对象实例。虚拟机栈用于存储方法的局部变量、操作数栈和返回值等。本地方法栈用于存储本地方法的参数和返回值。程序计数器用于记录当前线程执行的字节码指令地址。
(3) 执行引擎执行引擎是JVM的核心部分,它负责将Java字节码转换为机器码,并执行Java程序。执行引擎分为两个部分:解释器和即时编译器。
解释器将Java字节码逐条解释为机器码,并执行Java程序。即时编译器将Java字节码编译为本地机器码,并执行Java程序。即时编译器可以提高Java程序的执行效率。

4.java虚拟机运行过程

java程序运行过程:字节码文件加载 -> 解释执行/编译执行

简单图:

JVM第一篇 认识java虚拟机,java,JVM,jvm,java,开发语言

 复杂图:

JVM第一篇 认识java虚拟机,java,JVM,jvm,java,开发语言

 文章来源地址https://www.toymoban.com/news/detail-677634.html

到了这里,关于JVM第一篇 认识java虚拟机的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JVM(Java虚拟机)-史上最全、最详细JVM笔记

    一、JVM概述 1、1为什么要学习JVM 1、2虚拟机 1、3JVM作用 1、4JVM整体组成部分  二、JVM结构--类加载器 2、1类加载子系统 2、2类加载过程 2、2、1加载 2、2、2链接 2、2、3初始化 2、3类加载器分类 2.3.1 引导类加载器(启动类加载器 BootStrap ClassLoader) 2.3.2 扩展类加载器(Extension ClassL

    2024年02月03日
    浏览(64)
  • JVM(Java虚拟机)

    目录 1.JVM 简介 2. JVM 运行时数据区 2.1程序计数器 2.栈 3.堆 4.方法区 3.类加载 1.loading 2.linking 1.验证 2.准备 3.解析 3.Initializing 4.双亲委派模型 5.JVM垃圾回收机制 1.劣势 2.回收什么 3.垃圾回收具体怎么回收 1.找垃圾 方法: 问题: 2.释放垃圾 JVM 是 Java Virtual Machine 的简称,意为 Java虚

    2024年02月01日
    浏览(54)
  • Java虚拟机快速入门 | JVM引言、JVM内存结构、直接内存

    目录 一:JVM引言 1. 什么是 JVM ? 2. 常见的 JVM 3. 学习路线 二:JVM内存结构 1. 程 序 计 数 器(PC Register) 2. 虚 拟 机 栈(JVM Stacks) 3. 本 地 方 法 栈(Native Method Stacks) 4. 堆(Heap) 5. 方 法 区(Method Area) 三:直接内存 tips: 首先给大家推荐两款好用的免费软件:动图抓取软

    2024年02月05日
    浏览(64)
  • JVM——Java虚拟机详解

    JVM——Java虚拟机,它是Java实现平台无关性的基石。 Java程序运行的时候,编译器将Java文件编译成平台无关的Java字节码文件(.class),接下来对应平台JVM对字节码文件进行解释,翻译成对应平台匹配的机器指令并运行。 同时JVM也是一个跨语言的平台,和语言无关,只和class的文

    2024年01月19日
    浏览(79)
  • JVM(Java虚拟机)详解

    目录 一、JVM内存区域划分   1. 什么是内存区域划分以及为啥要进行区域划分   2. JVM内存区域划分详解   3. 堆区详解:    4. 给一段代码,问某个变量是在那个区域上? 二、JVM类加载机制   1.类加载的过程   2. 类加载的时机   3. 双亲委派模型(经典面试) 三、JVM垃圾回收

    2024年02月15日
    浏览(66)
  • JVM(Java虚拟机)概述

         JVM(Java Virtual Machine)是一个能够运行Java字节码的虚拟计算机。它是Java平台的核心组成部分,负责执行编译后的Java程序,提供跨平台运行的能力。JVM使得Java程序可以在任何安装了JVM的操作系统上运行,无需对代码进行修改,实现了\\\"一次编写,到处运行\\\"(Write Once, Ru

    2024年03月11日
    浏览(55)
  • Java虚拟机(JVM)框架

    见:GitHub - eHackyd/Java_JVM: Java虚拟机(JVM)框架的学习笔记

    2024年02月10日
    浏览(51)
  • Jvm --java虚拟机(上)

    为什么学习jvm 如果你这辈子只甘心做一个平庸的Java码农,那么你可以利用阅读本文的时间去学习其他新的技术知识,但是如果你想成为一个更更更更优秀的中高级程序员!那么请继续阅读本文,希望这篇文章会对你有所帮助,那么学习jvm有啥好处嘞? 首先: 你能够明白为什

    2024年02月03日
    浏览(64)
  • Java虚拟机(JVM):虚拟机栈溢出

    Java虚拟机栈溢出(Java Virtual Machine Stack Overflow)是指在Java程序中,当线程调用的方法层级过深,导致栈空间溢出的情况。 Java虚拟机栈是每个线程私有的,用于存储方法的调用和局部变量的内存空间。每当一个方法被调用时,会在栈中创建一个栈帧,用于存储方法的参数、局

    2024年02月12日
    浏览(50)
  • Java虚拟机(JVM):堆溢出

    Java堆溢出(Java Heap Overflow)是指在Java程序中,当创建对象时,无法分配足够的内存空间来存储对象,导致堆内存溢出的情况。 Java堆是Java虚拟机中用于存储对象的一块内存区域。当程序创建对象时,会在堆中分配一块连续的内存空间来存储对象的实例变量。如果堆中的剩余

    2024年02月12日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包