当前位置: 首页 > news >正文

JVM修炼印记之初识

文章目录

  • JVM认识
  • JVM的功能
  • 常见JVM
  • HotSpot的发展历程

JVM认识

  • Java虚拟机(Java Virtual Machine,JVM)是一个用于执行Java字节码的虚拟计算机。它是Java语言的核心,可以在不同的操作系统和硬件平台上运行Java程序。

  • JVM负责将Java源代码编译成字节码,然后执行字节码,将其转换为操作系统可以理解的机器码。

  • JVM提供了内存管理、垃圾回收和安全性等方面的支持。

  • Java程序员可以使用Java编译器将Java源代码编译成字节码,然后在任何支持JVM的平台上运行。

  • JVM 本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件。
    在这里插入图片描述

JVM的功能

在这里插入图片描述

  • Java语言如果不做任何优化,性能不如C、C++等语言。
    在这里插入图片描述

  • Java需要实时解释,主要是为了支持跨平台特性。
    在这里插入图片描述

  • 由于JVM需要实时解释虚拟机指令,不做任何优化性能不如直接运行机器码的C、C++等语言,解决方案:使用即时编译
    在这里插入图片描述

常见JVM

在这里插入图片描述

HotSpot的发展历程

在这里插入图片描述
HotSpot是Oracle公司开发的Java虚拟机,是目前使用最广泛的JVM之一。它的发展历程可以简单概括为以下几个阶段:

  1. 初始版本(1999年):HotSpot最初是由Sun Microsystems公司开发的,旨在提高Java程序的性能。它采用了一种名为“混合模式”的执行方式,将字节码解释执行和即时编译相结合,以提高程序的执行效率。

  2. HotSpot 1.3(2000年):HotSpot 1.3是第一个正式发布的版本,引入了许多新特性,包括轻量级锁、逃逸分析、对象压缩等。这些特性大大提高了Java程序的性能和可伸缩性。

  3. HotSpot 1.4(2002年):HotSpot 1.4进一步增强了性能和可伸缩性,引入了新的垃圾回收器,包括并行垃圾回收器和CMS垃圾回收器。这些垃圾回收器可以更好地管理内存,减少应用程序的停顿时间。

  4. HotSpot 1.5(2004年):HotSpot 1.5是一个重要的版本,引入了许多新特性,包括自动内存管理、JIT编译器的优化等。这些特性大大提高了Java程序的性能和可伸缩性,使得Java成为了一种更加高效的编程语言。

  5. HotSpot 1.6(2006年):HotSpot 1.6进一步增强了性能和可伸缩性,引入了新的垃圾回收器,包括G1垃圾回收器。这些垃圾回收器可以更好地管理内存,减少应用程序的停顿时间。

  6. HotSpot 1.7(2011年):HotSpot 1.7引入了新的垃圾回收器,包括G1垃圾回收器和CMS垃圾回收器的改进版。同时,它还引入了新的语言特性,包括钻石操作符、try-with-resources语句等。

  7. HotSpot 1.8(2014年):HotSpot 1.8是当前最新的版本,引入了许多新特性,包括lambda表达式、Stream API等。同时,它还提高了性能和可伸缩性,引入了新的垃圾回收器,包括G1垃圾回收器的改进版。
    自HotSpot 1.8发布以来,Java虚拟机和Java语言都经历了许多变化,以下是HotSpot在2014年以后的主要发展:

  8. HotSpot 9(2017年):HotSpot 9是一个重要的版本,引入了模块化系统(Java Platform Module System,JPMS),这是Java 9的一个重要特性。JPMS允许开发人员将Java代码组织成模块,以提高可维护性和安全性。

  9. HotSpot 10(2018年):HotSpot 10是一个小版本,引入了一些新特性,包括本地变量类型推断、应用类数据共享等。本地变量类型推断允许开发人员在不显式指定变量类型的情况下声明变量,从而提高代码的可读性和简洁性。应用类数据共享则可以减少JVM的启动时间和内存占用。

  10. HotSpot 11(2018年):HotSpot 11是一个重要的版本,是Java 11的默认JVM。它引入了许多新特性,包括ZGC垃圾回收器、Epsilon垃圾收集器、HTTP客户端API等。ZGC垃圾回收器是一种可伸缩的垃圾回收器,可以在数百兆字节到数千兆字节的堆大小范围内实现低延迟的垃圾回收。Epsilon垃圾收集器则是一种无操作的垃圾收集器,它不会回收任何对象,用于测试和性能调优。HTTP客户端API则是一种新的HTTP客户端实现,提供了更好的性能和可扩展性。

  11. HotSpot 14(2020年):HotSpot 14引入了一些新特性,包括JFR事件流API、ZGC并发堆释放、NUMA感知的内存分配等。JFR事件流API允许开发人员将Java Flight Recorder(JFR)事件导出到其他系统中进行分析和处理。ZGC并发堆释放可以在垃圾回收期间释放堆内存,减少应用程序的停顿时间。NUMA感知的内存分配可以提高多个虚拟机在NUMA架构下的性能。

相关文章:

JVM修炼印记之初识

文章目录 JVM认识JVM的功能常见JVMHotSpot的发展历程 JVM认识 Java虚拟机(Java Virtual Machine,JVM)是一个用于执行Java字节码的虚拟计算机。它是Java语言的核心,可以在不同的操作系统和硬件平台上运行Java程序。 JVM负责将Java…...

开关电源老化试验和性能检测系统软件

开关电源自动测试系统由PC(工控机)、测试工装、可编程直流电源、数字示波器、可编程直流电子负载、继电器模块等部分组成,并通过RS232/LAN通讯总线、测试夹具以及其它线缆等进行连接,为系统组成结构。PC与可编程直流电源、数字示波器、可编程直流电子负载…...

水库大坝可视化智能远程监管方案,助力安全监测智能巡检

一、背景需求 水库大坝作为防洪度汛的重要设施,其安全问题直接关系到人民群众的生命财产安全。因此,必须加强对大坝水库的安全管理,对水库除险加固和运行管护要消除存量隐患,实现常态化管理,同时要配套完善重点小型水…...

C#学习系列之虚方法和多态

C#学习系列之虚方法和多态 啰嗦设计原则(六大类其中之一)基类的引用使用 共性与差异虚方法和多态的武器使用 其他总结 啰嗦 基础学习。 设计原则(六大类其中之一) **依赖倒置原则:**依赖抽象类,不依赖具体…...

面试算法44:二叉树中每层的最大值

题目 输入一棵二叉树,请找出二叉树中每层的最大值。例如,输入图7.4中的二叉树,返回各层节点的最大值[3,4,9]。 分析:用一个队列实现二叉树的广度优先搜索 由于要找出二叉树中每层的最大值,因…...

JWT的头部、载荷和签名分别包含哪些信息?

JWT(JSON Web Token)由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。每个部分都是经过Base64编码的JSON字符串。 1:头部(Header): 头部通常包含两个信息:令牌类型(typ)和所用的加密算法(alg)。令牌类型(typ)指示该令牌类型为JWT。加密算法(…...

【烧火柴问题】奇思妙想火柴

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

C++数据结构算法篇Ⅰ

C数据结构算法篇Ⅰ 📟作者主页:慢热的陕西人 🌴专栏链接:C算法 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 主要内容讲解数据结构中的链表结构 文章目录 C数据…...

Python selenium获取元素信息

视频版教程:一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium 主要text属性和三个方法get_attribute(),get_property(),get_dom_attribute() text属性获取元素的文本信息; get_attribute(),ge…...

测试Winsock的select

说明 实现了一个回显一行字符串的服务器:客户端发送一行字符串,一’\n’结尾,服务器接受完一行后就原封不动地发回给客户端。 windows下对select的能监控的Socket数量是有限制的,若超过,一种方案是再开一个线程。 #i…...

CentOS 搭建 Hadoop3 高可用集群

Hadoop FullyDistributed Mode 完全分布式 spark101spark102spark103192.168.171.101192.168.171.102192.168.171.103namenodenamenodejournalnodejournalnodejournalnodedatanodedatanodedatanodenodemanagernodemanagernodemanagerrecource managerrecource managerjob hist…...

ModuleNotFoundError: No module named ‘paddle.fluid.incubate.fleet‘

在使用rocketqa的时候可能会遇到下面的问题: 问题: 解决方法: 这完全是paddlepaddle的问题。 在rocketqa/utils/optimization.py出现下面的语句,这个时候直接把出错的注释掉就可以,因为它完全没有用到。(…...

【Java】Java中的引用类型

强引用(StrongReference) 通过new直接创建的对象,只要该对象还可以被其它对象使用或访问到,就不会被回收 软引用(SoftReference) 引用一个对象,该对象在系统内存溢出不足时,会自动…...

File类、方法递归

File:代表文本 IO流:读写数据 1、 File 类构建对象的方式是什么样的? File 的对象可以代表哪些东西? 注意 File 对象既可以代表文件、也可以代表文件夹。 ● File 封装的对象仅仅是一个路径名,这个路径可以是存在的&#xff0c…...

MySQL - 系统库之 sys

sys 系统库用于管理和监控MySQL服务器的性能和运行状态: 用途: 性能监控和分析:sys 系统库用于监控MySQL服务器的性能和资源利用情况。它提供了各种视图和函数,用于分析查询性能、资源利用、等待事件等方面的数据。性能调优&…...

GoLong的学习之路(十七)基础工具之Gin框架使用JWT(前后端分离)

文章目录 JWT安装JWT使用什么是Claims默认Claims自定义Claims生成JWT解析JWT 在gin框架中使用JWT获取Token渠道定义方法设置中间件注册路由 总结一下 JWT JWT全称JSON Web Token是一种跨域认证解决方案,属于一个开放的标准,它规定了一种Token实现方式&a…...

【代码数据】2023粤港澳大湾区金融数学建模B题分享

基于中国特色估值体系的股票模型分析和投资策略 首先非常建议大家仔细的阅读这个题的题目介绍,还有附赠的就是那个附件里的那几篇材料,我觉得你把这些内容读透理解了,就可以完成大部分内容。然后对于题目里它主要第一部分给出了常用的估值模…...

大数据之LibrA数据库系统告警处理(ALM-12006 节点故障)

告警解释 Controller按30秒周期检测NodeAgent状态。当Controller连续三次未接收到某个NodeAgent的状态报告时,产生该告警。 当Controller可以正常接收时,告警恢复。 告警属性 告警ID 告警级别 可自动清除 12006 严重 是 告警参数 参数名称 参…...

poi兴趣点推荐数据集介绍

介绍 foursquare数据集包含2153471个用户,1143092个场所,1021970个签到,27098490个社交关系以及用户分配给场所的2809581评级,我们常用的是根据NYC和TKY都是从该数据集中抽取出来的。 下载地址:https://sites.google.…...

把两个4点的结构相加

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点,训练集中只有5张图片,让A中有4个1,B全是0,排列组合,统计迭代次数并排序。 其中有3个结构 3差值结构 迭代次数 4差值结构 迭代次数 31 3-2 0 1 …...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

ES6从入门到精通:前言

ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

AI,如何重构理解、匹配与决策?

AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...

高抗扰度汽车光耦合器的特性

晶台光电推出的125℃光耦合器系列产品(包括KL357NU、KL3H7U和KL817U),专为高温环境下的汽车应用设计,具备以下核心优势和技术特点: 一、技术特性分析 高温稳定性 采用先进的LED技术和优化的IC设计,确保在…...

表单设计器拖拽对象时添加属性

背景:因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...

TI德州仪器TPS3103K33DBVR低功耗电压监控器IC电源管理芯片详细解析

1. 基本介绍 TPS3103K33DBVR 是 德州仪器(Texas Instruments, TI) 推出的一款 低功耗电压监控器(Supervisor IC),属于 电源管理芯片(PMIC) 类别,主要用于 系统复位和电压监测。 2. …...

Windows开机自动启动中间件

WinSW(Windows Service Wrapper 是一个开源的 Windows 服务包装器,它可以帮助你将应用程序打包成系统服务,并实现开机自启动的功能。 一、下载 WinSW 下载 WinSW-x64.exe v2.12.0 (⬇️ 更多版本下载) 和 sample-minimal.xml 二、配置 WinS…...