IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> JVM和java体系结构 -> 正文阅读

[Java知识库]JVM和java体系结构

java和JVM简介

java

  • 跨平台的语言

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LsgXvNsk-16389764在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    16155)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20211208184802598.png)]

jvm

  • 跨语言的平台

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VkKx8tqd-1638976416156)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20211208184842706.png)]

java虚拟机可运行多种语言,因为他并不与某种特定的语言有必然联系,它只与特定的二进制文件相关联,因此利用java虚拟机可以实现多语言混合编程

java虚拟机可运行多种语言

  • 随着java7的正式发布,java虚拟机的设计者们通过JSR-292规范基本实现在java虚拟机平台上运行非java语言编写的程序
  • java虚拟机根本不关心运行在内部的程序到底是使用何种编程语言编写的,它只关心“字节码”文件。也就是说JVM是语言无关的,只要其他编程语言的编译结果满足并包含java虚拟机的内部指令集、符号表以及其他的辅助信息,他就是一个有效的字节码文件,就能够被虚拟机所识别并装载运行

字节码

  • java字节码,指的是用java语言编译成的字节码。而在jvm平台上执行的字节码格式都是一样的,所以统称为jvm字节码
  • 不同编译器,可编译出相同的字节码文件,字节码文件也可以在不同的JVM上运行。
  • java虚拟机只与特定的二进制文件格式——Class文件格式所关联。Class文件中包含了java虚拟机指令集(或者称为字节码,Bytecodes)和符号表,还有一些其他辅助信息。

多语言混合编程

java平台上的多语言混合变成正成为主流,通过特定领域的语言去解决特定领域的问题是当前软件开发应对日趋复杂的项目需求的一个方向


java发展的重大事件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4wjarZkW-1638976456932)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20211208215323940.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DzgyNvFh-1638976456933)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20211208215333005.png)]


虚拟机和java虚拟机

虚拟机

  • 虚拟机就是一太虚拟的计算机,他是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机程序虚拟机

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tv030aEa-1638976468121)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20211208215657862.png)]

  • 无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中。

java虚拟机

  • 它是一台执行java字节码的虚拟计算机,拥有独立的运行机制,其运行的java字节码也未必有java语言编译而成
  • java的核心技术就是java虚拟机,因为所以java程序都运行在java虚拟机内部
  • java虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。每一条java指令,java虚拟机规范中都有详细定义。如怎么去操作数,怎么处理操作数,处理结果放在哪里

特点:

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gl5Fb3iB-1638976468121)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20211208215831946.png)]

JVM整体结构

在这里插入图片描述

java代码执行流程

在这里插入图片描述

JVM的架构模型

  • 指令集基本分为两种,基于栈的指令集架构,和基于寄存器的指令集架构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

由于跨平台性的设计,java指令都是根据栈来实现的。不同平台CPU架构不同,所以不能设计为基于寄存器的。

  • 栈:跨平台,指令集小,指令多;执行性能比寄存器差

JVM生命周期

  • 虚拟机的启动

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

  • 虚拟机的执行

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

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

    JVM发展进程

  • Sun Classic VM

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

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

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

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

    1. 有影响力的三大商用虚拟机之一
    2. 服务器端,桌面应用,嵌入式等多用途VM
  • Azul VM
    在这里插入图片描述

  • Liquid VM
    在这里插入图片描述
    直接上传(img-Tz6d3mUL-1638976481844)(在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

尚硅谷宋红康JVM全套教程详解java虚拟机

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-09 11:31:13  更:2021-12-09 11:32:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:25:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码