当前位置: 首页 > 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 …...

docker详细操作--未完待续

docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

12.找到字符串中所有字母异位词

🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...