JVM工作原理与实战(一):初识JVM

专栏导航

JVM工作原理与实战

RabbitMQ入门指南

从零开始了解大数据


目录

专栏导航

前言

一、JVM概念

二、JVM的三大核心功能

1.内存管理

2.解释执行虚拟机指令

3.即时编译

三、常见的JVM虚拟机

1.HotSpot

2.GraalVM

3.Dragonwell JDK 龙井

4.Eclipse OpenJ9

总结


前言

JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。同时,JVM还具备动态优化功能,可以根据实际运行情况进行调整和优化。本文主要介绍了JVM的概念、JVM的三大核心功能、常见的JVM虚拟机等内容。


一、JVM概念

JVM,全称Java Virtual MachineJava虚拟机),是一个运行在计算机上的程序,其核心任务是运行Java字节码文件。Java字节码是一种中间代码,它是由Java源代码编译而来,但并非直接运行在硬件或操作系统上,而是通过JVM来解释或编译执行。这一设计使得Java能够在任何支持JVM的平台上运行,真正实现了“一次编写,到处运行”的理念。

二、JVM的三大核心功能

1.内存管理

JVM的内存管理是整个虚拟机中非常重要的部分。其负责管理堆内存,这是JVM中用于动态分配内存的区域。当Java程序创建对象时,JVM会在堆上为该对象分配内存。这种分配是动态的,意味着可以根据需要调整内存的大小。

堆内存的管理涉及到两个主要方面:对象的创建对象的销毁。当一个对象被创建时,JVM会在堆上为其分配内存。这个过程涉及到内存的分配和初始化,确保对象能够正确地存储数据。而当对象不再被引用,或者程序结束时,JVM会自动回收这些内存,以释放资源。

内存管理还包括垃圾回收(Garbage Collection, GC)机制。垃圾回收器自动检测并清除那些不再被引用的对象,释放其占用的内存。这一过程是为了防止内存泄漏,并确保系统的稳定运行。

2.解释执行虚拟机指令

解释执行是JVM执行Java字节码的一种方式。Java源代码在编译时会被转换成字节码,这是一种中间代码,它不直接对应任何特定的硬件架构。然后,JVM通过解释器逐条解释这些字节码并执行相应的操作。

解释执行的优势在于它的跨平台性。由于字节码是中间代码,无论在哪种操作系统或硬件平台上,只要安装了对应的JVM,就可以运行Java程序。这极大地提高了Java的跨平台能力。

然而,解释执行也有其缺点,主要是执行速度相对较慢。为了提高程序的执行效率,一些高级的JVM会使用即时编译(JIT)技术。

3.即时编译

即时编译(Just-In-Time)是一种优化技术,它在程序运行时将热点代码编译成本地机器码。这些热点代码通常是频繁执行的代码片段,将它们编译成本地代码可以显著提高执行速度。

即时编译的优势在于它能够根据运行时的实际情况进行优化。JVM可以监测代码的执行情况,识别出那些频繁执行的热点代码,然后将其编译成本地机器码。这不仅提高了执行速度,而且减少了解释器的工作负担。

即时编译的实现通常包括两个步骤:编译优化。编译是将字节码转换成机器码的过程,而优化则是在编译的基础上进一步提高代码的执行效率。通过即时编译,JVM能够在运行时动态地调整和优化代码的执行,从而提高程序的性能。

​​

三、常见的JVM虚拟机

常见的JVM:

名称公司支持版本社区活跃度特性适用场景

HotSpot

(Oracle JDK版)

Oracle所有版本

使用最广泛,稳定可靠,社区活跃

JIT支持

Oracle JDK默认虚拟机

默认

HotSpot

(Open JDK版)

Oracle所有版本

同上

开源,Open JDK默认虚拟机

默认

对JDK有二次开发需求

GraalVMOracle

11, 17,19

企业版支持8

多语言支持

高性能、JIT、AOT支持

微服务、云原生架构

需要多语言混合编程

Dragonwell JDK

龙井

Alibaba

标准版 8,11,17

扩展版11,17

基于OpenJDK的增强

高性能、bug修复、安全性提升

JWarmup、ElasticHeap、Wisp特性支持

电商、物流、金融领域

对性能要求比较高

Eclipse OpenJ9

(原 IBM J9)

IBM8,11,17,19,20

高性能、可扩展

JIT、AOT特性支持

微服务、云原生架构

1.HotSpot

HotSpot是由Oracle(原Sun Microsystems)开发的一款高性能的JVM,被广泛使用。为了提高Java程序的执行效率,HotSpot虚拟机采用了多种优化技术,其中最核心的是即时编译技术。此外,HotSpot虚拟机还支持一种称为“混合编译”的优化技术,它将解释执行和即时编译结合起来,进一步优化程序的性能。

除了即时编译技术外,HotSpot虚拟机还具有其他高性能特性。它优化了垃圾回收器和内存管理器,为Java程序提供了高效、稳定的运行环境。这些特性共同作用,使HotSpot成为高性能、可扩展的JVM,广泛适用于各种应用程序和场景。

2.GraalVM

GraalVM是一个高性能的运行时环境,可以运行多种语言的程序,包括Java、JavaScript、Python等。它旨在提供一种统一的运行时环境,以支持各种不同的编程语言和框架。

GraalVM通过使用即时编译和垃圾回收技术来提高程序的执行效率。它还提供了一种称为“Truffle”的框架,用于实现自定义语言的解释器和编译器。通过Truffle框架,开发者可以使用高级语言编写程序,并利用GraalVM的高性能特性来运行它们。

除了高性能的即时编译和垃圾回收功能外,GraalVM还支持多种语言的互操作性。这意味着开发者可以在同一个应用程序中使用不同的编程语言,并轻松地调用和交互它们的功能。这种互操作性使得GraalVM成为一种灵活、高效的多语言运行时环境。

3.Dragonwell JDK 龙井

Dragonwell JDK是阿里巴巴提供的一款功能增强版的JVM。它基于HotSpot虚拟机进行了一些优化和增强,旨在提高Java程序的性能和稳定性。

Dragonwell JDK通过优化HotSpot虚拟机的内部机制来提高Java程序的执行效率。它涉及对垃圾回收器、即时编译器和其他核心组件的调整和改进。这些优化旨在提高程序的启动速度、运行时的性能以及减少资源消耗。

除了性能优化外,Dragonwell JDK还提供了一些额外的功能和工具,以增强开发者的体验和应用程序的质量。其中包括对特定于中国市场的特性的支持、更好的调试和监控工具以及对最新Java版本的早期支持等。

4.Eclipse OpenJ9

OpenJ9是IBM开发的一款高性能的JVM,它不仅支持Java SE标准,还提供了强大的垃圾回收和诊断工具。作为一款专为企业级应用打造的高性能JVM,OpenJ9致力于为应用程序提供稳定、高效的运行环境。

OpenJ9虚拟机具有优化的垃圾回收机制,可以有效地管理内存并减少内存泄漏的风险。它还提供了一套丰富的诊断工具,帮助开发者和系统管理员监控和调试Java应用程序。这些工具包括性能分析器、内存监视器和线程分析器等,可以帮助开发者分析程序的性能瓶颈和解决潜在问题。

OpenJ9在大型企业级应用和关键任务应用中得到了广泛应用。它被认为是一种可靠、高性能的JVM选择,适用于需要高可用性和可扩展性的应用程序场景。


总结

JVM是Java程序的运行环境,负责字节码解释、内存管理、安全保障、多线程支持、性能监控和跨平台运行。本文主要介绍了JVM的概念、JVM的三大核心功能、常见的JVM虚拟机等内容,希望对大家有所帮助。

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

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

相关文章

数据仓库-数仓优化小厂实践

一、背景 由于公司规模较小,大数据相关没有实现平台化,相关的架构都是原生的Apache组件,所以集群的维护和优化都需要人工的参与。根据自己的实践整理一些数仓相关的优化。 二、优化 1、简易架构图 2、ODS层优化 2.1 分段式解析 随着业务增长…

【XR806开发板试用】XR806串口驱动CM32M对小厨宝的控制实验

一.说明 非常感谢基于安谋科技STAR-MC1的全志XR806 Wi-FiBLE开源鸿蒙开发板试用活动,并获得开发板试用。 XR806是全志科技旗下子公司广州芯之联研发设计的一款支持WiFi和BLE的高集成度无线MCU芯片,支持OpenHarmony minisystem和FreeRTOS,具有集成度高、…

2013年第二届数学建模国际赛小美赛B题寄居蟹进化出人类的就业模式解题全过程文档及程序

2013年第二届数学建模国际赛小美赛 B题 寄居蟹进化出人类的就业模式 原题再现: 寄居蟹是美国最受欢迎的宠物品种,依靠其他动物的壳来保护。剥去寄居蟹的壳,你会看到它柔软、粉红色的腹部卷曲在头状的蕨类叶子后面。大多数寄居蟹喜欢蜗牛壳&…

每日一题:LeetCode-LCR 179. 查找总价格为目标值的两个商品

每日一题系列(day 16) 前言: 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 &#x1f50e…

ChatGPT在地学、GIS、气象、农业、生态、环境等领域中的高级应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮,可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

NodeJs 第四章 net、http、https 模块

net、http、https 模块 netnet 模块是什么net 模块能干些什么net 模块如何创建服务器net 模块如何创建客户端 http如何发送一个http请求如何创建 http 服务 https如何获取 SSL 证书如何创建一个 https 服务 net net 模块是什么 net 模块异步网络 API,用于创建基于…

MongoDB主从复制,一文打尽!

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

Spring Boot学习随笔- Jasypt加密数据库用户名和密码以及解密

学习视频:【编程不良人】2021年SpringBoot最新最全教程 第十九章、Jasypt加密 Jasypt全称是Java Simplified Encryption,是一个开源项目。 Jasypt与Spring Boot集成,以便在应用程序的属性文件中加密敏感信息,然后在应用程序运行…

mac下jd-gui提示没有找到合适的jdk版本

mac下jd-gui提示jdk有问题 背景解决看一下是不是真有问题了方法一:修改启动脚本方法二:设置launchd环境变量 扩展动态切jdk脚本(.bash_profile) 背景 配置了动态jdk后,再次使用JD-GUI提示没有找到合适的jdk版本。 解决 看一下是不是真有问题…

《数据结构、算法与应用C++语言描述》- 平衡搜索树 -全网唯一完整详细实现插入和删除操作的模板类

平衡搜索树 完整可编译运行代码见:Github::Data-Structures-Algorithms-and-Applications/_34Balanced search tree 概述 本章会讲AVL、红-黑树、分裂树、B-树。 平衡搜索树的应用? AVL 和红-黑树和分裂树适合内部存储的应用。 B-树适合外部存储的…

gzip引入后node_modules中.cache compression-webpack-plugin占用内存过多

1.Gzip Gzip(GNU zip)是一种常见的文件压缩格式和压缩算法,通常用于在 Web 服务器上对静态资源文件进行压缩,以减小文件大小并加快文件传输速度。在前端开发中,经常会使用 Gzip 压缩来优化网站的性能。 Gzip 压缩通过…

云计算:OpenStack 配置云主机实例的资源实现内网互通

目录 一、实验 1. 环境 2.配置项目及用户 3.配置规格实例与镜像 4.配置VPC 5. 配置安全组 6. 创建云主机 cs_01 (cirros系统) 7.创建云主机 cs_02 (cirros系统) 8.创建云主机 cs_03 (cirros系统) …

AI大模型引领未来智慧科研暨丨ChatGPT在地学、GIS、气象、农业、生态、环境等领域中的高级应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮,可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

第十三章 Nacos服务注册和配置中心

Nacos服务注册和配置中心 gitee:springcloud_study: springcloud:服务集群、注册中心、配置中心(热更新)、服务网关(校验、路由、负载均衡)、分布式缓存、分布式搜索、消息队列(异步通信&#…

Python搭建代理IP池实现存储IP的方法

目录 前言 1. 介绍 2. IP存储方法 2.1 存储到数据库 2.2 存储到文件 2.3 存储到内存 3. 完整代码示例 总结 前言 代理IP池是一种常用的网络爬虫技术,可以用于反爬虫、批量访问目标网站等场景。本文介绍了使用Python搭建代理IP池,并实现IP存储的…

25、商城系统(七):商城项目基础功能pom.xml(重要),mybatis分页插件

截止这一章,我们就不把重心放在前端,后台的基础代码,因为后面都是业务层面的crud。 前端直接替换这两个文件夹即可,后台代码也直接复制: 一、重新更新一下所有的pom.xml 这个地方我踩了好多坑,最后得到一个完整的pom.xml,建议大家直接用我的pom.xml替换即可。 1.comm…

STM32 CubeMX工具在TSL2561驱动开发中的快速集成与调试技巧

在STM32 CubeMX工具中快速集成和调试TSL2561驱动的开发技巧,可以大大提高开发效率和减少调试时间。下面将为您介绍如何在CubeMX中进行快速集成和调试TSL2561驱动的技巧和步骤。 1. 创建新工程和选择芯片型号 打开STM32 CubeMX工具,点击“New Project”…

高光回眸:阿里云容器服务如何全面助力精彩亚运

作者:刘佳旭 谢乘胜 贤维 引言 2023 年,第 19 届杭州亚运会在杭州成功举办。在亚运之光和科技之光的交相辉映下,这届亚运会成为亚运史上首届“云上亚运”,用云计算创造了历史,赛事核心系统和转播全面上云&#xff0c…

deepin系统安装达梦数据库

deepin系统安装达梦数据库 1.下载安装包和执行可执行文件2.解压缩可执行文件3.运行安装程序 2.初始化3.达梦管理工具 deepin系统安装达梦数据库 1.下载安装包和执行可执行文件 进入deepin系统桌面, 打开终端, 输入命令uname -a 检查cpu架构,前往达梦官网下载合适的安装包, 目前…

将正规文法转化为正规式

将正规文法转化为正规式有以下几个规则: 通过一道例题来讲解: ①A-->aC|bA ②C-->bD ③D-->aC|bD| (1)首先将②带入③(不能将自身带入自身例如D-->aC|bD|,文法中带D,不能带入D) DabD|bD|(…