JVM深入理解(1)——概述

写在最前,本篇文章大部分来源于 《深入理解Java虚拟机》 以及b站尚硅谷JVM全套教程的提炼,并附带自己的理解,主要是为了帮助自己理解,和用于复习。如果同时还能对其他人有所裨益,那就更好不过了。如果有谬误的地方,还请不吝指出。

JVM:跨语言的平台

在这里插入图片描述Java虚拟机不关心内部程序是否由java语言编写,只要相应的编程语言编译出来的字节码文件能够遵循Java虚拟机规范,java虚拟机就可以用来解释运行对应的编程语言。即Java虚拟机拥有语言无关性。而java具有平台无关性

虚拟机不关心Class文件的来源语言。

字节码
java字节码,指的是用java语言编译而成的字节码,任何java平台上执行的字节码格式都是一样的,所以也称为JVM字节码。
多语言混合编程
Java平台上,多语言混合编程正成为主流。各语言之间的交互不存在困难,就像使用原生API一样,其原因是这些语言都最终运行在一个虚拟机之上。

虚拟机与Java虚拟机

虚拟机

虚拟机(Virtual Machine),就是一台虚拟的计算机。是一款软件,用以执行一系列虚拟计算机指令。大体上可以分为系统虚拟机程序虚拟机

  • 系统虚拟机:Visual Box, VMware。是对物理计算机的仿真提供了可运行完整操作系统的软件平台。
  • 程序虚拟机:Java虚拟机,专门为执行单个计算机程序而设计,在java虚拟机中执行的指令称为Java字节码指令。

Java虚拟机

Java虚拟机是执行Java字节码(由于JVM跨语言的特性,所以现在也称为JVM字节码)的虚拟计算机。

JVM平台的各种语言可以共享JVM带来的跨平台性,优秀的垃圾回收器,以及可靠的即时编译器

Java技术的核心就是JVM,因为所有的java程序都运行在JVM内部。

作用:
JVM是二进制字节码的运行环境,负责加载字节码到其内部,解释/编译为对应平台上的机器指令执行,每一条Java指令,JVM规范都有详细的定义,如:怎样取、处理操作数。

特点:

  1. 一次编译,到处运行
  2. 自动内存管理
  3. 自动垃圾回收功能(降低内存泄漏和溢出的风险)

JVM的位置

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

JVM的整体结构*

接下来讲解的顺序如图所示:

  1. 类装载器
  2. 运行时数据区
  3. 执行引擎(解释器、即时编译器: 、垃圾回收器)
    字节码指令不等同于机器指令,执行引擎将字节码指令翻译为机器指令
    在这里插入图片描述
    HotSpot VM是目前市面上高性能虚拟机的代表之一
    采用解释器与即时编译器并存的架构

Java代码执行流程

其中编译器环节的任何一个环节失败,都不能正确生成字节码文件。

JVM的生命周期

启动

JVM的启动是通过引导类加载器创建一个初始类来完成的,是由虚拟机的具体实现指定的

执行

程序开始时运行,程序结束时停止
执行Java程序,实际上执行的是一个JVM的进程

退出

  • 正常执行结束
  • 异常或错误而终止
  • 操作系统草屋
  • Runtime类或System类的exit方法(被Java安全管理器允许)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值