JVM知识总结(即时编译)

news2024/12/28 3:23:44

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

在这里插入图片描述

即时编译

Java编译器经过解释执行,其执行速度必然会比直接执行可执行的二进制字节码慢很多。

  • 为了解决这种效率问题,引入了 JIT(Just In Time ,即时编译) 技术。

当JVM发现某个方法或代码块运行特别频繁的时候,就会认为这是热点代码:

  • JIT会把部分热点代码翻译成本地机器相关的机器码,并进行优化,然后再把翻译后的机器码缓存起来,以备下次使用。

热点检测

目前主要的热点代码识别方式是热点探测,HotSpot虚拟机中采用的主要是基于计数器的热点探测。

  • 采用这种方法的虚拟机会为每个方法,甚至是代码块建立计数器,统计方法的执行次数。

  • 某个方法超过阀值就认为是热点方法,触发JIT编译。

编译优化

JIT在做了热点检测识别出热点代码后,除了会对其字节码进行缓存,还会对代码做各种优化。

  • 逃逸分析,锁消除,锁膨胀,方法内联等。

逃逸分析

当一个对象在方法中被定义后,它可能被外部方法所引用,例如作为调用参数传递到其他地方中,称为方法逃逸。

有了逃逸分析,可以判断出一个方法中的变量是否有可能被其他线程所访问或者改变,基于这个特性,JIT做了一些优化:

  • 标量替换,栈上分配

通过逃逸分析,Hotspot编译器能够分析出一个新的对象的引用的使用范围从而决定是否要将这个对象分配到堆上。

标量替换

如果经过逃逸分析,发现一个对象不会被外界访问,经过JIT优化,就会把这个对象拆解成若干个其中包含的若干个成员变量来代替。

栈上分配

经过逃逸分析技术发现这个对象并没有被外部引用且仅在当前线程使用,那么它就会将该对象分配在栈上。

锁消除

逃逸分析某些没有被外部方法或者其他线程引用的情况下,会将某些锁消除。

方法内联

对于可以内联的方法,直接复制到调用者代码中,减少方法调用次数和性能消耗。

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

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

相关文章

【Linux】学习Linux,需要借助具象化的思维

指令与图形化界面 导读一、命令行与图形化界面二、命令行与图形化界面的发展历程1.2.1 打字机的起源1.2.2 肖尔斯和格利登型打字机1.2.3 鼠标的发明1.2.4 图形化界面(GUI)的发展 三、命令行与图形化之间的联系3.1 图形化界面的人机交互3.2 命令行界面的人…

SOLIDWORKS 机电协同设计:无缝集成,提升创新速度

在现代制造业中,产品的复杂性和多样性日益增加,这要求设计团队能够在更短的时间内交付高质量的产品。为了应对这一挑战,越来越多的企业开始采用机电一体化的设计方法,其中SOLIDWORKS成为了实现这一目标的理想工具。作为SOLIDWORKS…

趋动科技联合超聚变,让超融合彻底释放算力潜能

近日,趋动科技联合超聚变推出基于FusionOne HCI超融合的AI算力资源池化解决方案。该方案基于业内领先的AI算力资源池化技术,实现智能调度、异构算力融合管理等功能,让客户能够低成本获取AI算力,便捷使用AI算力,加速AI业…

Linux中的无人职守安装脚本kickstart

一、linux中的无人职守安装脚本kickstart 作用:自动化装系统。就是创建虚拟机,建立完成以后,不需要再进入配置root等,直接就可以自动安装,快速装机。 1.1 提前准备 准备一台红帽linux7系统 linux7 下载图形化界面 […

Docker 常规安装简介

Docker常规安装简介 欢迎关注我的B站:https://space.bilibili.com/379384819 1. 安装mysql 1.1 docker hub上面查找mysql镜像 网址: https://hub.docker.com/_/mysql 1.2 从docker hub上(阿里云加速器)拉取mysql镜像到本地标…

【秋招笔试】2024-08-06-农商银行-三语言题解(CPP/Python/Java)

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 小伙伴们心心…

CLM安装及运行、移植、编译、结果处理、可视化;CESM移植、安装及快速运行

NCAR陆面模式CLM (Community Land Model)是地球系统模式CESM (Community Earth System Model)中的陆面过程模式分量,是在结合了BATS、LSM和IAP94等众多陆面模式的优点后,加入水文过程而开发出的综合性陆面模式,是目前国际上发展最为完善且得到…

100个好用的智能体 | MBTI性格测试专家

今天要介绍的智能体是MBTI性格测试专家,这个是目前Coze里排名第一个的智能体。 默认一共会出8道题(这个可以进行修改) 回答完题目会总结出你的MBTI类型: 如何制作这个智能体? 非常简单,这个智能体只需要使…

论多源数据集成及应用写作框架软考高级论文系统架构设计师论文

论文真题 在如今信息爆炸的时代,企业、组织和个人面临着大量的数据。这些数据来自不同的渠道和资源,包括传感器、社交媒体、销售记录等,它们各自具有不同的数据格式、分布和存储方式。因此如何收集、整理和清洗数据,以建立一个一…

RocketMQ5.0课笔记-主从设计,持久化

rocketmq的副本分类 两副本三副本(两组副本写成功,可认为消息持久化成功)四副本 三副本:三副本的方式可以异步复制,远程容灾 rocketmq的复制方式 同步复制异步复制 云原生存储持久化可以保存时间:几个月…

【实现100个unity特效之19】使用ShaderGraph实现Unity 2D水

最终效果 文章目录 最终效果前言开始新增无光照影响的shaderGraph半透明效果,并且有一些颜色的变化其他办法参考完结 前言 先粗略记录一下,后面再补充 开始 我们新建一个render texture 设置尺寸 然后我要创建另外一个摄像机,将他的画面…

【原创】springboot+mysql法律咨询网设计与实现

个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…

【Redis】Redis 数据类型

文章目录 前言1 通用知识1.1 基本全局命令1.2 数据结构和内部编码 2 String2.1 类型介绍2.2 相关命令2.2.1 SET/GET 系列命令2.2.2 INCR/DECR 计数系列命令2.2.3 其他命令2.2.4 命令小结 2.3 内部编码2.4 应用场景2.4.1 缓存功能2.4.2 计数功能2.4.3 共享会话2.4.4 验证码功能 …

4G工业路由器赋能智能停车场远程监控管理

随着城市化进程的加快和汽车保有量的不断增加,城市停车问题艰巨。传统停车场管理模式存在诸多弊端,如停车位信息不透明、寻找停车位耗时长、停车管理效率低下等。为了有效解决这些问题,提升城市停车管理水平,结合物联网技术4G工业…

计算机毕业设计Hadoop+Spark旅游景点推荐 旅游推荐系统 旅游可视化 景区游客满意度预测与优化 Apriori算法 景区客流量预测 旅游大数据

**开题报告** **题目:** Hadoop旅游推荐系统的设计与实现 **一、选题背景及意义** 随着互联网技术的发展和普及,越来越多的人选择利用网络平台进行旅游信息的获取和旅行计划的制定。然而,由于信息的多样性和用户个性化需求的增加&#xff…

HVV小科普:蓝方是什么?

正文共:12345 字 19 图,预估阅读时间:9 分钟 网络实战攻防演习,俗称“护网”、“HW”等,是指模拟真实网络环境中的攻击和防御行为,旨在提高网络安全防护能力和应急响应能力。这种演习通常由安全团队、军事组…

获取客户端真实IP

出于安全考虑,近期在处理一个记录用户真实IP的需求。本来以为很简单,后来发现没有本来以为的简单。这里主要备忘下,如果服务器处于端口回流(hairpin NAT),keepalived,nginx之后,如何取得客户端的…

springboot企业门户资讯网站-计算机毕业设计源码04252

基于springboot技术的企业门户资讯网站 摘 要 在当今数字化时代,企业门户资讯网站已成为企业展示形象、传递信息、吸引客户的重要渠道。随着技术的不断发展,传统的网站开发方式已经无法满足现代企业的需求。因此,基于Spring Boot技术的企业门…

阿里云播放器 web端 问题解决总结

1:ios设备长按视频,会出现系统的放大镜效果: 可以只监听touchstart事件即可 var playerContainer document.getElementById(this.playerId); playerContainer.addEventListener(touchstart, preventZoom, { passive: false }); playerConta…

【数据结构与算法 | 力扣+二叉搜索树篇】力扣938

1. 力扣938:二叉搜索树的范围和 1.1 题目: 给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。 示例 1: 输入:root [10,5,15,3,7,null,18], low 7, high 15 输出:32示…