【JVM基础01】——介绍-初识JVM运行流程

news2024/11/24 0:20:39

目录

  • 1- 引言:初识JVM
    • 1-1 JVM是什么?(What)
      • 1-1-1 概念
      • 1-1-2 优点
    • 1-2 为什么学习JVM?(Why)
  • 2- 核心:JVM工作的原理(How)
    • ⭐2-1 JVM 的组成部分及工作流程
    • 2-2 学习侧重点
  • 3- 小结(知识点大纲):
    • 3-1 JVM 组成
    • 3-2 类加载器
    • 3-3 垃圾回收
    • 3-4 JVM实践


1- 引言:初识JVM

1-1 JVM是什么?(What)

1-1-1 概念

  • Java Virtual Machine :JAVA运行时环境(java 二进制字节码的运行环境)
  • Java 的二进制字节码的运行环境。我们都知道 Java 代码想要运行的话,就必须得先经过编译,之后编译成 .class 文件才能运行,JVM就是 .class 二进制字节码的运行环境。

1-1-2 优点

  1. 一次编译,到处执行
  • JVM实现一次编译,到处运行的原理是通过屏蔽操作系统的差异来实现的。具体来说,Java代码编译成二进制字节码后,这些字节码在不同操作系统上的JVM中都可以运行。
  • JVM作为一个软件层,运行在操作系统上,无论是 Windows 还是 Linux,真正运行 Java 代码的是JVM 而不是操作系统。因此,JVM 使得 Java 能够跨平台执行,实现了“一次编写,到处运行”。

image.png

  1. 自动内存管理,垃圾回收机制
  • JVM的第二个优点是自动内存管理和垃圾回收机制。与C语言需要程序员手动管理内存不同,Java虚拟机通过自动垃圾回收功能,大大减轻了程序员的负担,减少了内存泄漏的风险,从而提高了程序的稳定性和开发效率。

1-2 为什么学习JVM?(Why)

  • 学习 JVM 以便我们能够 深入理解Java,一旦掌握了 JVM,也就知道了 Java 的运行机制,特别对于排查问题的能力将会有大幅度提升。
    • ① 了解 JAVA 运行机制
    • ② 提升排查问题的能力(内存泄漏、CPU飙升等)

2- 核心:JVM工作的原理(How)

⭐2-1 JVM 的组成部分及工作流程

image.png


  1. Java源代码到类加载子系统

作用: 将Java源代码转化为JVM能够理解和执行的格式,并将这些格式正确加载到JVM中。

  • Java Source (Java源代码):编写的 Java 源代码文件,通常以 .java 为扩展名。
  • Java Class (Java类文件):通过Java编译器(javac)将Java源代码编译成字节码文件,通常以 .class 为扩展名。
  • 类加载子系统:负责将编译后的 .class 文件加载到 JVM 中,进行加载、验证、准备、解析和初始化。类加载子系统的作用是将 .class 文件转换为 JVM 可以执行的内部表示,并将其放入运行时数据区。

  1. 运行时数据区

作用: 运行时数据区是JVM在执行Java程序时所需的内存区域,包含了程序执行过程中所需的数据和信息。

  • Method Area/MetaSpace (方法区/元空间):存储类结构信息,如运行时常量池、字段和方法数据、方法和构造函数的字节码内容。
  • Heap (堆):用于存储对象实例和数组,是垃圾回收的主要区域。
  • PC Register (程序计数器):记录当前线程正在执行的字节码指令地址。
  • JVM Stacks (虚拟机栈):每个线程私有,用于存储局部变量、操作数栈、动态链接和方法调用等信息。
  • Native Method Stack (本地方法栈):每个线程私有,用于存储本地方法调用的信息。

  1. 执行引擎

作用: 执行引擎负责将字节码转换为机器码并执行,确保Java程序高效运行,并通过垃圾回收机制管理内存。

  • Interpreter (解释器):逐行解释执行字节码指令,将每条字节码指令翻译成相应的机器码并执行。
  • JIT Compiler (即时编译器):将热点代码(频繁执行的代码段)编译成机器码,提高执行效率。
  • GC (垃圾回收):负责自动回收不再使用的对象,释放内存空间,防止内存泄漏。

  1. 本地方法接口和本地库

作用: 本地方法接口和本地库使Java程序能够调用和执行平台相关的功能和库,扩展了Java的能力,使其可以与底层系统进行交互。

  • 本地方法接口 (JNI):允许Java代码调用本地(通常是 C 或 C++)代码,提供与操作系统或其他底层库的接口。
  • 本地库 (Native Libraries):提供本地方法实现的库文件,通常以动态链接库(如.dll.so)的形式存在。

2-2 学习侧重点

  • 对于 JVM 组成:主要关注 JVM 的运行时数据区。
  • 类加载器:类加载子系统中的类加载器
  • 垃圾回收:运行时数据区堆中对象的回收
  • JVM实践

3- 小结(知识点大纲):

3-1 JVM 组成

在这里插入图片描述

3-2 类加载器

在这里插入图片描述

3-3 垃圾回收

在这里插入图片描述

3-4 JVM实践

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1929088.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu 22.04.4 LTS (linux) 安装certbot 免费ssl证书申请 letsencrypt

1 安装certbot sudo apt update sudo apt-get install certbot 2 申请letsencrypt证书 sudo certbot certonly --webroot -w 网站目录 -d daloradius.域名.com 3 修改nginx 配置ssl 证书 # 配置服务器证书 ssl_certificate /etc/letsencrypt/live/daloradius.域名.com/f…

FPGA:基于复旦微FMQL10S400 /FMQL20S400 国产化核心板

复旦微电子是国内集成电路设计行业的领军企业之一,早在2000年就在香港创业板上市,成为行业内首家上市公司。公司的RFID芯片、智能卡芯片、EEPROM、智能电表MCU等多种产品在市场上的占有率位居行业前列。 今天介绍的是搭载复旦微 FMQL10S400/FMQL20S400的…

16001.WSL2 ubuntu20.04 编译安装 vsomeip

文章目录 1 vsomeip 编译安装1.1 vsomeip的安装1.2 编译提示错误1.3 编译hello_world示例1.4 运行服务器端 1 vsomeip 编译安装 1.1 vsomeip的安装 参考博文 https://blog.csdn.net/peterwanye/article/details/128386539 1.2 编译提示错误 ubuntu1-BJ-EE1000042:~/opt/vso…

【持续集成_05课_Linux部署SonarQube及结合开发项目部署】

一、Linux下安装SonarQube 1、安装sonarQube 前置条件:sonarQube不能使用root账号进行启动,所以需要创建普通用户及 其用户组 1)创建组 2)添加用户、组名、密码 3)CMD上传qube文件-不能传到home路径下哦 4&#xff09…

【NLP大模型】词嵌入的空间表示与应用

文章目录 一、语义特征空间二、引入新维度:皇室三、语义特征向量的用途四、向量运算类比五、词嵌入的维度和应用词嵌入的应用 六、测量欧几里得距离向量计算向量和欧几里得距离 七、使用点积测量相似度八、创建词嵌入 一、语义特征空间 考虑“男人”、“女人”、“…

安防监控平台LntonAIServer视频监控管理平台裸土检测算法核心优势和应用场景

LntonAIServer裸土检测算法是一种基于人工智能技术的创新解决方案,旨在实现对裸土地表的自动识别。以下是对该算法的详细解析: 一、技术原理 LntonAIServer裸土检测算法利用深度学习和计算机视觉技术,通过捕捉视频或图像中的关键信息&#…

记录我使用poi库,中文却无法显示的问题

目录 前言: 正片: 修改word的编码格式 第一步: 第二步: 第三步: 第四步: 第五步: 修改idea编码格式 前言: 🎈🎈🎈这是昨天晚上Blue遇到的…

【微服务】Spring Cloud Config解决的问题和案例

文章目录 强烈推荐引言解决问题1. 配置管理的集中化2. 配置的版本控制3. 环境特定配置4. 配置的动态刷新5. 安全管理敏感数据6. 配置的一致性 组件1. **配置服务器(Config Server)**2. **配置客户端(Config Client)** 配置示例配置…

2024年大数据高频面试题(上篇)

文章目录 HDFS读流程和写流程HDFS读数据流程NameNode和Secondary NameNode工作机制FsimageEdits文件Seen_txidnamenode工作机制HA NameNode如何工作ZKFCHealthMonitorActiveStandbyElectorJouranlNode集群DataNode工作机制DataNode数据损坏压缩MapReduce工作流程MapTask工作流R…

Git常用命令以及使用IDEA集成Gitee

目录 一、设置用户签名 二、初始化本地库 三、查看本地库状态 四、添加文件到暂存区 五、提交本地库 六、修改文件 七、版本穿梭 八、Git分支 九、分支的操作 9.1、查看分支 9.2、创建分支 9.3、切换分支 9.4、合并分支 十、团队协作 十一、Idea集成Git 11.1、配…

Vulnhub:DC-1

1.环境搭建 靶机下载地址 将下载的靶机导入到Oracle VM VirtualBox中,设置仅主机模式,使用和kali相同的网卡 2.渗透过程 使用nmap工具进行主机发现扫描 nmap -sn 192.168.56.0/24 发现靶机ip地址,使用nmap工具进行靶机端口扫描 nmap -sS…

Golang | Leetcode Golang题解之第238题除自身以外数组的乘积

题目: 题解: func productExceptSelf(nums []int) []int {length : len(nums)// L 和 R 分别表示左右两侧的乘积列表L, R, answer : make([]int, length), make([]int, length), make([]int, length)// L[i] 为索引 i 左侧所有元素的乘积// 对于索引为 …

AIGC时代算法工程师的面试秘籍(2024.6.24-7.7第十七式) |【三年面试五年模拟】

写在前面 【三年面试五年模拟】旨在整理&挖掘AI算法工程师在实习/校招/社招时所需的干货知识点与面试方法,力求让读者在获得心仪offer的同时,增强技术基本面。也欢迎大家提出宝贵的优化建议,一起交流学习💪 欢迎大家关注Rocky…

如何使用ECharts和DataV.GeoAtlas创建广东省人口分布图

引言 数据可视化是数据分析中的重要环节,它可以帮助我们直观地理解数据。ECharts 是一个由百度团队开发的开源数据可视化库,它提供了丰富的图表类型和灵活的配置选项。DataV.GeoAtlas 是阿里云提供的一个地理数据可视化平台,它可以帮助我们获…

【Python爬虫教程】第7篇-requests模块的cookies保存和使用

文章目录 为什么要保存cookiesrequests.utils工具类保存cookies到本地文件从本地文件解析cookies使用使用实践 为什么要保存cookies 保存cookies是避免每次都登录获取权限,一遍权限是有过期时间的,不需要每次重复登录,可以将cookies保存起来…

vue数据缓存

data 对象未定义或未正确传递:确保 data 对象在你调用 onMounted 钩子时已经存在且包含 base.columns 属性。 columns 响应式引用未定义:确保 columns 是一个使用 ref 或 reactive 创建的响应式引用。 异步数据问题:如果 data 是通过异步操…

苹果手机相册怎么全部删除照片?这样做快人一步

使用苹果手机越久,大家手机里存储的照片也日益增多,内存逐渐变得紧张。不少用户在换上新手机后,将旧的苹果手机当作备用机。在为新手机腾出空间时,大家清理了大量不用的文件和内存,然而,清理手机相册却成了…

【找不到视图问题解决】@RestController 与 @Controller注解的使用区别

一、问题描述 苍穹外卖在菜品分页查询功能实现的过程中,出现了找不到视图的情况 2024-07-12 21:54:20.860 ERROR 22488 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with p…

剖析 AI 对音乐的影响:创造还是毁灭之路

文章目录 📒一、引言 📒二、AI 降低音乐创作门槛 🚀(一)技术进步带来的便捷 🚀(二)对音乐普及的推动作用 📒三、AI 重塑音乐创作流程 🚀(一…

【多个Python版本存在,使用pip+不同版本安装库时,windows弹出打开方式窗口的解决方法】

问题描述 电脑上存在python3.9,3.10,3.11,安装顺序也是先安装3.9,然后3.10,最后3.11,那么直接使用pip安装,会装在3.11的位置,经过搜索可以通过pip版本,比如pip3.9 insta…