【从零开始学JVM】第一章_JVM和java体系结构

这篇具有很好参考价值的文章主要介绍了【从零开始学JVM】第一章_JVM和java体系结构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第一章_JVM和java体系结构

1.java和JVM简介

1.1Java

Java是一门跨平台的语言

Java 语言的特点包括:

  1. 跨平台性:Java 程序可以在不同操作系统上运行,只需安装对应平台的 Java 虚拟机(JVM)即可。
  2. 面向对象:Java 是一种纯粹的面向对象编程语言,支持封装、继承、多态等面向对象特性。
  3. 健壮性:Java 在设计时考虑了许多安全检查,如内存管理、异常处理等,以确保程序的稳定性和可靠性。
  4. 安全性:Java 提供了安全管理机制,可以防止恶意代码对系统造成危害。
  5. 高性能:Java 通过即时编译等技术提高了执行效率,适用于需要高性能的应用场景。

1.2JVM

JVM 是 Java 程序的运行环境,它负责将 Java 字节码翻译成特定平台的机器码并执行。

JVM 还提供了垃圾回收内存管理等功能,帮助开发者更轻松地管理程序的执行。

【从零开始学JVM】第一章_JVM和java体系结构,【从零开始学JVM】,jvm,java,python

2.Java文件编译过程

  1. 程序员编写的.java文件
  2. 由javac编译成字节码文件.class:(为什么编译成class文件,因为JVM只认识.class文件)
  3. 在由JVM编译成电脑认识的文件(0101010101) (对于电脑系统来说 文件代表一切)

【从零开始学JVM】第一章_JVM和java体系结构,【从零开始学JVM】,jvm,java,python

3.JVM整体结构

【从零开始学JVM】第一章_JVM和java体系结构,【从零开始学JVM】,jvm,java,python

  1. 类加载器子系统(Class Loader Subsystem)
    • 类加载器负责加载类文件到内存中,并生成对应的 Class 对象。类加载器按照特定的规则从不同的位置加载类文件,如文件系统、网络等。
    • 类加载器通常包括启动类加载器(Bootstrap Class Loader)、扩展类加载器(Extension Class Loader)和应用程序类加载器(Application Class Loader)等层次。
  2. 运行时数据区(Runtime Data Area)
    • 方法区(Method Area):存储类的元信息、静态变量、常量池等数据。
    • 堆(Heap):存储对象实例以及数组
    • 栈(Stack):存储局部变量、操作数栈、方法返回地址等。
    • 程序计数器(Program Counter Register):记录当前线程执行的字节码指令地址。
    • 本地方法栈(Native Method Stack):为执行本地方法服务。
  3. 执行引擎(Execution Engine)
    • 解释器(Interpreter):逐行解释字节码并执行对应的本地机器指令。
    • 即时编译器(Just-In-Time Compiler,JIT):将热点代码(频繁执行的代码段)编译成本地机器码,提高执行效率。
  4. 本地方法接口(Native Interface)
    • 提供了与底层 C/C++ 等语言交互的能力,允许 Java 调用本地方法。
  5. 本地方法库(Native Method Libraries)
    • 包含了一些与平台相关的本地库和方法,用于支持 JVM 的底层操作。

4.JVM生命周期

  • 虚拟机的启动

    通过引导类加载器(bootstrap class loader)创建一个初始类来完成,这个类是由虚拟机的具体实现指定的。

  • 虚拟机的执行

    • 一个运行中的java虚拟机有这一个清晰地任务,执行java程序
    • 程序开始执行时他才运行,程序结束时它就停止
    • 执行一个所谓的java程序的时候,真真正正在执行的是一个叫做java虚拟机的进程
      虚拟机的退出
  • 程序正常执行结束

    • 程序在执行过程中遇到了异常会错误而终止
    • 由于操作系统出现错误而导致java虚拟机进程终止
    • 某线程调用Runtime类或Systen类的exit方法,或Runtime类的halt方法,并且java安全管理器也允许这次exit或halt操作。
    • 除此之外,JNI规范描述了用JNI Invocation API来加载或卸载Java虚拟机时,jaca虚拟机的退出情况

5.JVM发展进程

  • Sun Classic VM

    • 世界上第一款商用java虚拟机
    • 虚拟机内部只提供解释器
    • 现在的hotspot内置了此虚拟机
  • Exact VM

    • 可以知道内存中某个位置的数据具体是什么类型
    • 具备现代高性能虚拟机的雏形:热点探测+编译器和解释器混合工作模式
  • HotSpot VM

    • JDK1.3时,成为默认虚拟机
    • 在服务器端,桌面到移动端,嵌入式都有应用
    • Hotspot指的就是热点代码探测技术
  • JRockit

    • 专注于服务器端应用
    • 内部不包含解析器实现
    • 是世界上最快的JVM
  • J9

    • 有影响力的三大商用虚拟机之一
    • 服务器端,桌面应用,嵌入式等多用途VM
  • Azul VM

    • 无停顿垃圾回收
    • 与特定硬件平台绑定,软硬件配合的专有虚拟机
    • 可预测性
    • 适用于大内存应用
  • Liquid VM

    【从零开始学JVM】第一章_JVM和java体系结构,【从零开始学JVM】,jvm,java,python

  • Taoban JVM

    【从零开始学JVM】第一章_JVM和java体系结构,【从零开始学JVM】,jvm,java,python文章来源地址https://www.toymoban.com/news/detail-830978.html

6.JDK发展路程

  1. JDK 1.0(1996年):最初版本的 Java 开发工具包中包含了最基本的 JVM,实现了 Java 语言的基本功能。
  2. JDK 1.2(1998年):引入了 Just-In-Time 编译器(JIT),提高了 Java 程序的性能。
  3. JDK 1.3(2000年):增加了 Java HotSpot 虚拟机,引入了即时编译器技术,进一步提升了性能。
  4. JDK 1.4(2002年):引入了新的垃圾回收器(包括并行回收器和分代回收器),改善了内存管理和回收效率。
  5. JDK 5.0(2004年):引入了泛型、枚举、自动装箱拆箱等新特性,对虚拟机也做了优化和改进。
  6. JDK 6(2006年):增加了 G1 垃圾回收器,改进了性能和可靠性。
  7. JDK 7(2011年):引入了新的垃圾回收器(G1 GC)、InvokeDynamic 指令等功能,提高了性能和灵活性。
  8. JDK 8(2014年):引入了 Lambda 表达式、Stream API 等新特性,同时对虚拟机进行了性能优化。
  9. JDK 9(2017年):引入了模块化系统(Jigsaw)、改进了垃圾回收器、优化了性能等。
  10. JDK 10、11、12、13、14、15、16、17、18:每个版本都带来了新的特性、改进和优化,如局部变量类型推断、ZGC 垃圾回收器、Shenandoah 垃圾回收器等。

到了这里,关于【从零开始学JVM】第一章_JVM和java体系结构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 计算机网络第一章——计算机体系结构(上)

    提示:剑未佩妥,出门已是江湖;酒尚余温,入口不识乾坤,愿历尽千帆,归来仍是少年。 电信网络就是通过电话线连接起来的一个网络,有线电视网络通过电缆或者光缆将已经录制好的电视节目发给千家万户,计算机网络是通过各个结点,这个结点包括终端的电脑,手机,

    2024年02月06日
    浏览(61)
  • 计算机网络——第一章体系结构相关习题及详细解析

    在OSI参考模型中,自下而上第一个提供端到端服务的层次是: A.数据链路层        B.传输层        C.会话层        D.应用层 答案选择: B.传输层 即, 在OSI参考模型中,自下而上第一个提供端到端服务的层次是传输层。  解析 为了解决这道题,我们首先要了解OSI体系结构

    2024年02月08日
    浏览(44)
  • 1.jvm和java体系结构

    Java是目前应用最为广泛的软件开发平台之一。随着Java以及Java社区的不断壮大Java 也早已不再是简简单单的一门计算机语言了,它更是一个平台、一种文化、一个社区。 ● 作为一个平台,Java虚拟机扮演着举足轻重的作用 ○ Groovy、Scala、JRuby、Kotlin等都是Java平台的一部分 ●

    2024年02月11日
    浏览(51)
  • JVM 体系结构

    JVM: 跨平台语言 需要不同语言由自己编译器,生成符合 JSR-292 JVM规范的字节码文件,即可在 Java 虚拟机中运行  多语言混合编程: Java 平台上的多语言混合编程正成为主流,通过特定领域的语言去解决特定领域的问题是当前软件开发应对日趋复杂的项目需求的一个方向 每个应

    2024年02月03日
    浏览(47)
  • 计算机组成与体系结构第一次试验:运算器实验

    为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至CSDN中,供同学们学习参考。如有不足或描述不完善之处,敬请各位指出,欢迎各位的斧正! 掌握使用算术逻辑运算器 74LS181 进行算术运算、 逻辑运算的方法。 掌握基于“累加-移位”原理的串

    2024年02月04日
    浏览(50)
  • RISC-V体系结构的U-Boot引导过程 第一阶段

    RISC-V体系结构的U-Boot引导过程 第一阶段 flyfish .globl使符号对链接器可见相当于C语言中的Extern,声明此变量,并且告诉链接器此变量是全局变量,外部可以访问.u-boot.lds里的ENTRY(_start)也是这里的_start。 即指定入口为_start,_start就是整个start.S的开始的地方,是整个uboot的代码的开

    2024年02月10日
    浏览(40)
  • 从零开始学数据分析之——《线性代数》第一章 行列式

    三十而立之年,开始自学数据分析,工作比较清闲,现发帖记录自己的数据分析之路,数据分析要学很多的东西,经过多月的摸索,目前分两个方面开始学习: ·知识方面:数学为王,拿起书本,重学《概率与统计》、《微积分》、《线性代数》 ·软件方面:MySQL、Python 将暂

    2024年02月12日
    浏览(45)
  • 【从零开始学习数据结构 | 第一篇】树

    目录 前言:  树: 树结点之间的关系描述:  树的常见属性: 森林: ​编辑树的性质: 总结: 当谈论数据结构时,树(Tree)是一种极为重要且常用的数据结构之一。树的概念源自现实生活中的树木,它具有分层结构,由 节点(Node) 和 边(Edge) 组成,形成了一种类似于

    2024年04月16日
    浏览(49)
  • 详解Java中的异常体系结构(throw,throws,try-catch,finally,自定义异常)

    目录 一.异常的概念 二.异常的体系结构 三.异常的处理 异常处理思路 LBYL:Look Before You Leap EAFP: It\\\'s Easier to Ask Forgiveness than Permission 异常抛出throw 异常的捕获 提醒声明throws  try-catch捕获处理 finally的作用 四.自定义异常类 有一句话说的很好 ”程序员不是在写BUG就是在改BUG”

    2024年02月05日
    浏览(41)
  • 【从零开始学习JAVA | 第三十一篇】异常体系介绍

            本文我们将为大家介绍一下异常的整个体系,而我们学习异常,不是为了敲代码的时候不出异常,而是为了能够熟练的处理异常,如何解决代码中的异常。  我们就以这张图作为线索来详细介绍一下Java中的异常: 在Java中, Exception(异常)是一种表示非致命错误或异

    2024年02月15日
    浏览(85)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包