【JVM】初步认识Java虚拟机
🐌个人主页: 🐌 叶落闲庭
💨我的专栏:💨
c语言
数据结构
javaEE
操作系统
Redis
石可破也,而不可夺坚;丹可磨也,而不可夺赤。
JVM
- 一、初识JVM
- 1.1 什么是JVM
- 1.2 JVM的功能
- 1.2.1 解释和运行
- 1.2.2 内存管理
- 1.2.3 即时编译
- 1.2.4 JVM 即时编译功能原理
- 1.3 常见的JVM
一、初识JVM
1.1 什么是JVM
JVM全称是Java Virtual Machine,中文译名Java虚拟机,JVM本质上是一个运行在计算机上的程序,它的职责是运行Java字节码文件,在字节码文件中包含了一连串的指令,这个指令就是字节码指令,这些指令是无法直接在计算机上运行的,因为计算机只能识别机器码,而Java虚拟机就负责将字节码转换成机器码从而让电脑识别,这个过程被称为解释,相当于将一门语言翻译成另一门语言。
1.2 JVM的功能
1.2.1 解释和运行
Java虚拟机可以将字节码文件中的指令实时的解释成机器码,让计算机执行
1.2.2 内存管理
- 自动为对象、方法等分配内存
- 自动的垃圾回收机制,回收不再使用的对象,不用像C/C++那样需要手动释放空间,降低了程序员写代码的难度
1.2.3 即时编译
- 对热门代码进行优化,提升执行效率
Java语言如果不做任何优化,其性能不如C/C++,因为Java语言需要将字节码指令通过JVM实时的解析为机器码才可以交给计算机运行,这个过程随着程序的执行,需要反复地执行,每次进行都需要花费一定的时间,而C/C++在编译过程中可以直接将源代码转换为计算机任何的机器码。
Java这样做的目的主要是为了支持跨平台特性,将一份字节码指令交给Linux、Windows平台,这些平台会安装不一样的JVM,分别将字节码解释成该平台上对应的机器码,实现了跨平台特性。
1.2.4 JVM 即时编译功能原理
有一个字节码文件,里面有一段字节码指令,虚拟机如果发现这段指令在很短时间内被多次调用,那么就会认为这段代码有必要去优化,会主动将代码解释并优化解析成机器码,然后将这个机器码保存在内存当中,这样当这段代码再次被执行时,就会直接从内存当中取出,直接调用。
- JVM利用即时编译(Uust-In-Time简称IT)进行性能的优化,最终能达到接近C、C++语言的运行性能
1.3 常见的JVM
名称 | 作者 | 支持版本 | 社区活跃度(github star) | 特性 | 适用场景 |
---|---|---|---|---|---|
HotSpot(Open JDK版) | Oracle | 所有版本 | 高(闭源) | 使用最广泛,稳定可靠,社区活跃,JIT支持,Oracle JDK默认虚拟机 | 默认 |
HotSpot(Open JDK版) | Oracle | 所有版本 | 中(16.1k) | 同上,开源,Open JDK默认虚拟机 | 默认,对JDK有二次开发需求 |
GraalVM | Oracle | 11,17,19,企业版支持8 | 高(18.7k) | 多语言支持,高性能、JT、AOT支持 | 微服务、云原生架构,需要多语言混合编程 |
Dragonwell JDK,龙井 | Alibaba | 标准版8,11,17,扩展版11,17 | 低(3.9k) | 基于OpenJDK的增强,高性能、bug修复、安全性提升,JWarmup、ElasticHeap、Wisp特性支持 | 电商、物流、金融领域,对性能要求比较高 |
Eclipse OpenJ9,(原BM)9) | IBM | 8,11,17,19,20 | 低(3.1k) | 高性能、可扩展,JIT、AOT特性支持 | 微服务、云原生架构 |
相关文章:

【JVM】初步认识Java虚拟机
🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 JVM 一、初识JVM1.1 什么是JVM1.2 JVM的功能…...

JAVA设计模式-模板模式
一.概念 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 使用了JAVA的继承机制,在抽象类中定义一个模板方法,该方法引用了若干个抽象方法࿰…...

day007
删除链表第n个节点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val …...

Spring Boot项目在Windows上的自启动策略与Windows自动登录配置
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...

mac 版hadoop3.2.4 解决 Unable to load native-hadoop library 缺失文件
mac 版hadoop3.2.4或其他版本 Unable to load native-hadoop library 缺失文件 Native 包报错缺失: 1. hadoop-3.2.4/lib/native里加*.dylib 2. hadoop-3.2.4/etc/hadoop/hadoop-env.sh 加或修改 export HADOOP_OPTS"-Djava.library.path/Users/lvan/Documen…...

mysql case when 不命中缓存
case when 在sql 中非常方便数据不同维度统计,但是也会出现mysql 索引不命中问题,当多个case 出现时,需要提取出来到where里面优化 优化后 SELECT date(RecordTime) AS date, count( DISTINCT CASE WHEN Param 1 …...

2023年金九银十网络安全考试试题
2023年金九银十网络安全考试试题 1.关于数据使用说法错误的是: A.在知识分享、案例中如涉及客户网络数据,应取敏感化,不得直接使用 B.在公开场合、公共媒体等谈论、传播或发布客户网络中的数据,需获得客户书面授权或取敏感化,公开…...

JS 图片的左右切换
图片的左右切换 <div class"slider"><img src"image1.jpg" alt"Image 1"><img src"image2.jpg" alt"Image 2"><img src"image3.jpg" alt"Image 3"> </div> <button …...

什么是Python虚拟环境?
视频教程地址:https://www.bilibili.com/video/BV1Zy4y1F7hC/ 大家好,这一集我们来介绍一下什么是Python虚假环境。虚拟环境是python基础知识中非常重要的一个知识点。 相信python新手都会遇到过这样的问题,在命令行中下载了某个三方库在py…...

知识增强语言模型提示 零样本知识图谱问答10.8+10.11
知识增强语言模型提示 零样本知识图谱问答 摘要介绍相关工作方法零样本QA的LM提示知识增强的LM提示与知识问题相关的知识检索 实验设置数据集大型语言模型基线模型和KAPIN评估指标实现细节 实验结果和分析结论 摘要 大型语言模型(LLM)能够执行 零样本cl…...

Linux编译FFmpeg
Linux编译FFmpeg 1. 下载FFmpeg源码 FFmpeg源码下载地址:http://ffmpeg.org/download.html 在下面选择版本 2. 解压并创建生成目录 tar xvf ffmpeg-snapshot.tar.bz2 // 解压下载的FFmpeg源码 makedir /root/ffmpeg // 创建生成目录3. 编译FFmpeg 进入FF…...

Netty深入浅出Java网络编程学习笔记(二) Netty进阶应用篇
目录 四、应用 1、粘包与半包 现象分析 粘包 半包 本质 解决方案 短链接 定长解码器 行解码器 长度字段解码器——LTC 2、协议设计与解析 协议的作用 Redis协议 HTTP协议 自定义协议 组成要素 编码器与解码器 编写测试类 Sharable注解 自定义编解码器能否使用Sharable注解 3、在…...

机器学习基础之《回归与聚类算法(1)—线性回归》
一、线性回归的原理 1、线性回归应用场景 如何判定一个问题是回归问题的,目标值是连续型的数据的时候 房价预测 销售额度预测 贷款额度预测、利用线性回归以及系数分析因子 2、线性回归定义 线性回归(Linear regression)是利用回归方程(函数)对一个或多个自变量(…...

如何实现制造业信息化转型?
一、制造业信息化历史 (1)1930年代 库存控制、管理 当时计算机系统尚未出现,人们为了解决库存管控的难题,提出了订货点法——当库存量降低到某一预先设定的点时,即开始发出订货单补充库存,直至库存量降低…...

stable diffusion艰难炼丹之路
文章目录 概要autoDL系统盘爆满autoDL python3.8切换python3.10dreambooth训练大模型完成后报错 概要 主要是通过autoDL服务器部署stable diffusion,通过dreambooth训练大模型。 问题: autoDL系统盘爆满autoDL python3.8切换python3.10dreambooth训练大…...

竞赛 深度学习 opencv python 实现中国交通标志识别
文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 🔥 优质…...

用Python实现数据透视表、音频文件格式转换
用Python实现数据透视表、音频文件格式转换 1.用Python实现数据透视表 import pandas as pdif __name__ __main__:# df pd.read_excel(广告-资源位变现效率监测看板-1.xlsx, sheet_name各业务在该资源位的明细数据)df pd.read_excel(填充率分析-Q3.xlsx, sheet_name库存底…...

java枚举中写抽象方法
之前写java枚举时,都是中规中矩的写,从来没见过在枚举中写抽象方法的,但最近换了新公司,接手了新项目,发现枚举中竟然写了抽象方法,由于之前没接触过这种写法,所以这里记录下 实体类student代码…...

麒麟操作系统提示“默认密钥环已上锁”的解决办法
在国产麒麟操作系统上,有的时候不知道为啥,打开vscode或者其他应用软件时,总是提示“密钥环已上锁”,该怎么处理呢? 需要点击“开始”,在搜索框中输入“password” 点击打开“密码和密钥”,看到如下图。 然后点击左上角的箭头,回退,打开如下图:...

云原生周刊:Docker 推出 Docker Debug | 2023.10.9
开源项目推荐 SchemaHero SchemaHero 是一个 Kubernetes Operator,用于各种数据库的声明式架构管理。SchemaHero 有以下目标: 数据库表模式可以表示为可以部署到集群的 Kubernetes 资源。可以编辑数据库模式并将其部署到集群。SchemaHero 将计算所需的…...

设计模式 - 行为型模式考点篇:迭代器模式(概述 | 案例实现 | 优缺点 | 使用场景)
目录 一、行为型模式 一句话概括行为型模式 1.1、迭代器模式 1.1.1、概述 1.1.2、案例实现 1.1.3、优缺点 1.1.4、使用场景 一、行为型模式 一句话概括行为型模式 行为型模式:类或对象间如何交互、如何划分职责,从而更好的完成任务. 1.1、迭代器…...

Spark任务优化分析
一、背景 首先需要掌握 Spark DAG、stage、task的相关概念 Spark的job、stage和task的机制论述 - 知乎 task数量和rdd 分区数相关 二、任务慢的原因分析 找到运行时间比较长的stage 再进去看里面的task 可以看到某个task 读取的数据量明显比其他task 较大。 如果是sql 任…...

最新数据库流行度最新排名(每月更新)
2023年10月数据库流行度最新排名 TOP DB顶级数据库索引是通过分析在谷歌上搜索数据库名称的频率来创建的 一个数据库被搜索的次数越多,这个数据库就被认为越受欢迎。这是一个领先指标。原始数据来自谷歌Trends 如果您相信集体智慧,那么TOP DB索引可以帮…...

Python:如何在一个月内学会爬取大规模数据
Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫、学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这样的编程语言提供越来越多的优秀工具,让爬虫变得…...

K8S云计算系列-(4)
K8s Dashboard UI 部署实操 Kubernetes实现的最重要的工作是对Docker容器集群统一的管理和调度,通常使用命令行来操作Kubernetes集群及各个节点,命令行操作非常不方便,如果使用UI界面来可视化操作,会更加方便的管理和维护。如下为…...

【Mybatis源码】IDEA中Mybatis源码环境搭建
一、Mybatis源码源 在github中找到Mybatis源码地址:https://github.com/mybatis/mybatis-3 找到Mybatis git地址 二、IDEA导入Mybatis源码 点击Clone下载Mybatis源码 三、选择Mybatis分支 选择Mybatis分支,这里我选择的是3.4.x分支...

VUE如何使得大屏自适应的几种方法?
VUE学习大屏自适应的几种方法 1.自适屏幕,始终保持16:9的比例 <!-- 大屏固定比例16:9自适应 --> <template><div class"container"><div class"content" :style"getAspectRatioStyle"><!-- …...

API接口安全运营研究(内附官方开发平台api接口接入方式)
摘 要 根据当前API技术发展的趋势,从实际应用中发生的安全事件出发,分析并讨论相关API安全运营问题。从风险角度阐述了API接口安全存在的问题,探讨了API检测技术在安全运营中起到的作用,同时针对API安全运营实践,提出…...

信钰证券:股票交易费用计算方法?
股票生意是股市参加者之间进行的买入和卖出股票的进程。其中,股票生意费用是参加股市生意的重要组成部分。本文将从多个视点分析股票生意费用计算方法。 首先,股票生意费用一般包含三部分。分别是佣钱、印花税和过户费。佣钱是证券公司为代理股票生意而收…...

通过js获取用户网络ip地址
<!DOCTYPE html> <html><head><meta charset"utf-8"><title>js获取本地ip</title> </head><body><script>var xmlhttp;if (window.XMLHttpRequest) {xmlhttp new XMLHttpRequest();} else {xmlhttp new Act…...