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

JVM 03

今天是2025/03/24 15:21 day 11

总路线请移步主页Java大纲相关文章

今天进行JVM 5,6 个模块的归纳

首先是JVM的相关内容概括的思维导图

5. 优化技术

JVM通过多种优化技术提升程序执行效率,核心围绕热点代码检测编译优化实现动态性能提升。

热点代码检测

JVM通过统计代码执行频率识别“热点代码”(频繁执行的代码段),触发即时编译(JIT)优化:

  1. 方法调用计数器

    • 统计方法被调用的次数。

    • 默认阈值:客户端模式(C1编译器)1500次,服务端模式(C2编译器)10000次。

    • 超过阈值后,JIT编译器将方法编译为本地机器码,替换解释执行。

  2. 回边计数器

    • 统计循环体(如forwhile)的循环次数(“回边”指跳转到循环起始的指令)。

    • 触发标准:默认阈值与模式相关(例如C1为13995次)。

    • 达到阈值后,JIT会编译整个循环或方法,优化循环性能(如循环展开)。

编译优化

JIT编译器对热点代码进行深度优化,关键技术包括:

  1. 方法内联(Inlining)

    • 将小方法的调用替换为方法体代码,消除方法调用的栈帧开销。

    • 例如:a() { b(); } → 直接展开b()的代码到a()中。

    • -XX:MaxInlineSize参数控制(默认35字节以下方法可内联)。

  2. 逃逸分析(Escape Analysis)

    • 分析对象的作用域是否“逃逸”出方法或线程:

      • 未逃逸:对象仅在方法内使用 → 栈上分配(避免堆内存分配和GC压力)。

      • 线程逃逸:对象被其他线程访问 → 需同步处理。

      • 方法逃逸:对象作为返回值传递给其他方法 → 需堆分配。

    • 若对象未逃逸,JVM可能进一步进行标量替换(将对象拆解为基本类型字段存储)。

  3. 锁消除(Lock Elision)

    • 基于逃逸分析,若对象未逃逸当前线程,移除不必要的同步锁。

    • 例如:synchronized(new Object()) { ... }中的锁无实际竞争,会被直接移除。


6. 其他

JVM参数配置

关键参数直接影响内存布局和GC行为:

  1. 堆内存设置

    • -Xms:堆初始大小(如-Xms512m)。

    • -Xmx:堆最大大小(如-Xmx4g)。

    • 建议两者设为相同值,避免堆动态调整引发的性能波动。

  2. 代比例调整

    • -XX:NewRatio:老年代与年轻代的比例(默认2,即老年代占2/3,年轻代占1/3)。

    • -XX:SurvivorRatio:Eden区与Survivor区的比例(默认8,即Eden:S0:S1=8:1:1)。

  3. 元空间设置(Java 8+)

    • -XX:MetaspaceSize:元空间初始大小(默认约21MB)。

    • -XX:MaxMetaspaceSize:元空间最大大小(默认无限制,但受物理内存限制)。

OOM错误类型
  1. Heap OOM

    • 原因:堆内存不足,无法分配新对象(如大数组、内存泄漏)。

    • 排查:通过Heap Dump分析对象占用(MAT、VisualVM工具)。

  2. StackOverflowError

    • 原因:线程请求的栈深度超过JVM限制(如无限递归)。

    • 相关参数-Xss调整线程栈大小(默认1MB,Linux/x64)。

  3. Metaspace OOM

    • 原因:加载的类元数据超过元空间容量(如动态生成大量类)。

    • 典型场景:反射、CGLIB动态代理、大量JSP编译。


相关文章:

JVM 03

今天是2025/03/24 15:21 day 11 总路线请移步主页Java大纲相关文章 今天进行JVM 5,6 个模块的归纳 首先是JVM的相关内容概括的思维导图 5. 优化技术 JVM通过多种优化技术提升程序执行效率,核心围绕热点代码检测和编译优化实现动态性能提升。 热点代码检测 JVM…...

【VUE】day07 路由

【VUE】day07 路由 1. 路由2. 前端路由的工作方式3. 实现简易的前端路由4. 安装和配置路由4.1 安装vue-router包4.2 创建路由模块4.3 导入并挂在路由模块 5. 在路由模块中声明路由的对应关系5.1 router-view 1. 路由 在 Vue.js 中,路由(Routing&#xf…...

内网穿透的应用-本地部署ChatTTS教程:Windows搭建AI语音合成服务的全流程配置

文章目录 前言1. 下载运行ChatTTS模型2. 安装Cpolar工具3. 实现公网访问4. 配置ChatTTS固定公网地址 前言 各位开发者小伙伴们!今天我要给大家推荐一个超级火的AI项目——ChatTTS。这个开源文本转语音(TTS)项目的火爆程度简直让人难以置信&a…...

2025-03-21 Unity 网络基础3——TCP网络通信准备知识

文章目录 1 IP/端口类1.1 IPAddress1.2 IPEndPoint 2 域名解析2.1 IPHostEntry2.2 Dns 3 序列化与反序列化3.1 序列化3.1.1 内置类型 -> 字节数组3.1.2 字符串 -> 字节数组3.1.3 类对象 -> 字节数组 3.2 反序列化3.2.1 字节数组 -> 内置类型3.2.2 字节数组 -> 字…...

静态时序分析:SDC约束命令set_min_pulse_width详解

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 最小脉冲宽度检查用于确保一个单元的时钟引脚和异步置位/复位引脚的的脉冲宽度满足最小要求,如果违反该要求,则可能出现功能错误。严格意…...

推荐1款简洁、小巧的实用收音机软件,支持手机和电脑

聊一聊 没想到现在还有人喜欢听广播。 我一直以为听广播必须要用那种小广播机才可以。 原来手机或电脑上也是可以的。 今天给大家分享一款可以在电脑和手机上听广播的软件。 软件介绍 龙卷风收音机 电台广播收音机分电脑和手机两个版本。 电脑端无需安装,下载…...

HO与OH差异之Navigation

在上一篇的内容中我们进一步的了解了Navigation的用法,但是既然写到这里了我就再来扩充一下有关Navigation的内容。 HarmonyOS与OpenHarmony之间有些写法与内容是有差异的,就比如Navigation的跳转。以下内容中HarmonyOS我都简称为HO,OpenHar…...

盖泽 寻边器 帮助类

EA系列 Aligner晶圆校准器 晶圆校准器是一种应用于晶圆加工中的晶圆预对准装置,通过利用晶圆上的缺口(notch)将晶圆调整至预设位置,以确保晶圆的位置及方向,方便后续工艺的进行。产品广泛应用于半导体制造过程中的各个阶段,可集成至各类半导体设备中使用。 通讯方式 串口 …...

模糊规则激活方法详解(python实例对比)

前文我们已经了解了多种隶属函数,如三角形、梯形、高斯型、S型和Z型,并且讨论了模糊推理的基本过程,包括模糊化、规则评估、聚合和解模糊化。我们还了解了如何生成模糊规则的方法,比如专家经验、聚类分析、决策树、遗传算法和ANFI…...

value-key 的作用

在 el-autocomplete 组件中,value-key 是一个非常重要的属性,它用于指定选项对象中作为值的字段名。当选项列表是一个包含多个属性的对象数组时,value-key 能帮助组件明确哪个属性是实际要使用的值。比如,选项列表为 [{id: 01, na…...

venv 和 conda 哪个更适合管理python虚拟环境

在 Python 开发中,管理虚拟环境是避免依赖冲突和提高项目可复现性的关键。venv(Python 内置)和 conda(第三方工具)各有优劣,选择取决于你的具体需求。以下是详细对比和推荐场景: 1. venv&#x…...

论文阅读:2023 arxiv Provable Robust Watermarking for AI-Generated Text

总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 Provable Robust Watermarking for AI-Generated Text https://arxiv.org/pdf/2306.17439 https://github.com/XuandongZhao/Unigram-Watermark https://www.doubao.com/chat/211092…...

kube-vip实践

kube-vip 是一款专为 Kubernetes 设计的轻量级高可用(HA)和负载均衡工具,通过虚拟 IP(VIP)机制实现控制平面和服务的高可用性。以下从核心原理、部署实践到高级配置进行全面解析。 一、核心原理与模式 kube-vip 通过…...

python 中match...case 和 C switch case区别

文章目录 语法结构匹配模式的灵活性穿透特性缺省情况处理 在 Python 3.10 及以后的版本中引入了 match...case 语句,它和其他编程语言里的 switch...case 语句有相似之处,但也存在不少区别, 语法结构 match...case(Python&…...

Web前端考核 JavaScript知识点详解

一、JavaScript 基础语法 1.1 变量声明 关键字作用域提升重复声明暂时性死区var函数级✅✅❌let块级❌❌✅const块级❌❌✅ 1.1.1变量提升的例子 在 JavaScript 中,var 声明的变量会存在变量提升的现象,而 let 和 const 则不会。变量提升是指变量的声…...

Spring Boot3 配置文件

统一配置文件管理 SpringBoot工程下,进行统一的配置管理,你想设置的任何参数(端口号、项目根路径、数据库连接信息等等)都集中到一个固定位置和命名的配置文件(application.properties或application.yml)中&#xff0…...

消防设施操作员考试:巧用时间高效备考攻略

合理规划时间是备考消防设施操作员考试的关键,能让学习事半功倍。​ 一、制定详细时间表​ 根据备考时间和考试内容,制定每日、每周的学习计划。将学习时间合理分配给理论知识学习、技能实操练习和模拟考试。例如,每天安排 3 - 4 小时学习理…...

机器学习之KMeans算法

文章目录 引言1. KMeans算法简介2. KMeans算法的数学原理3. KMeans算法的步骤3.1 初始化簇中心3.2 分配数据点3.3 更新簇中心3.4 停止条件 4. KMeans算法的优缺点4.1 优点4.2 缺点 5. KMeans算法的应用场景5.1 图像分割5.2 市场细分5.3 文档聚类5.4 异常检测 6. Python实现KMea…...

深度学习技术与应用的未来展望:从基础理论到实际实现

深度学习作为人工智能领域的核心技术之一,近年来引起了极大的关注。它不仅在学术界带来了革命性的进展,也在工业界展现出了广泛的应用前景。从图像识别到自然语言处理,再到强化学习和生成对抗网络(GAN),深度…...

FastStoneCapture下载安装教程(附安装包)专业截图工具

文章目录 前言FastStoneCapture下载FastStoneCapture安装步骤FastStoneCapture使用步骤 前言 在日常工作与学习里,高效截图工具至关重要。本教程将为你呈现FastStoneCapture下载安装教程,助你轻松拥有。 FastStoneCapture下载 FastStone Capture 是一款…...

基于AWS Endpoint Security的合规性保障

设计AWS云架构方案实现基于AWS Endpoint Security(EPS)的合规性保障,使用EPS持续收集终端设备的安全状态数据(如补丁版本、密码策略),并通过CloudWatch生成合规性报告。企业可利用这些数据满足GDPR、HIPAA等法规对终端设备的安全审…...

26考研——图_图的遍历(6)

408答疑 文章目录 三、图的遍历图的遍历概述图的遍历算法的重要性图的遍历与树的遍历的区别图的遍历过程中的注意事项避免重复访问遍历算法的分类遍历结果的不唯一性 广度优先搜索广度优先搜索(BFS)概述BFS 的特点广度优先遍历的过程示例图遍历过程 BFS …...

C++类与对象的第一个简单的实战练习-3.24笔记

在哔哩哔哩学习的这个老师的C面向对象高级语言程序设计教程&#xff08;118集全&#xff09;讲的真的很不错 实战一&#xff1a; 情况一&#xff1a;将所有代码写到一个文件main.cpp中 #include<iostream> //不知道包含strcpy的头文件名称是什么,问ai可知 #include<…...

4.1 C#获取目录的3个方法的区别

C#中常用有如下3个获取目录的方式如下 1.Directory.GetCurrentDirectory():获取当前工作目录&#xff0c;工作目录可能被用户或其他代码修改。尽量少用。&#xff08;似乎只要在运行中使用另存为或者打开某个文件夹&#xff0c;当前工作目录就修改&#xff09; 2.Application…...

架构设计之自定义延迟双删缓存注解(上)

架构设计之自定义延迟双删缓存注解(上) 小薛博客官方架构设计之自定义延迟双删缓存注解(上)地址 1、业务场景问题 在多线程并发情况下&#xff0c;假设有两个数据库修改请求&#xff0c;为保证数据库与redis的数据一致性&#xff0c;修改请求的实现中需要修改数据库后&#…...

oracle数据库(数据库启动关闭/sqlplus登录及基本操作/设置字符集/distinct去重)

目录 1. Oracle数据库启动 2. Oracle数据库关闭 3. sqlplus登录Oracle数据库 3.1 使用sqlplus登录Oracle数据库 3.2 使用sqlplus登录Oracle数据库 3.3 远程登录 3.4 解锁用户 3.5 修改用户密码 3.6 查看当前语言环境 4. sqlplus基本操作 4.1 显示当前用户 4.2 查看当前用户…...

深入理解智能家居领域中RS485、Modbus、KNX 和 Zigbee协议概念

首先详细介绍一下 RS485 和 Modbus 这两个在工业自动化和数据通讯领域中非常重要的概念。 RS485 1. 定义与特点 RS485 标准&#xff1a;RS485 是一种串行通信标准&#xff0c;也称为TIA-485标准&#xff0c;主要用于数据传输。它规定了物理层的电气特性&#xff0c;与数据格式…...

软考系统架构师论文模版及实例

记住总体原则: 摘要——300字 项目背景与职责——300字左右 选取的架构特点——200字左右 架构在项目中的具体应用过程——1500字左右&#xff08;从每种架构中至少总结三个方面进行描述&#xff0c;例如三个特点在项目中的体现&#xff0c;三个步骤在项目中的应用等&#xff0…...

1、SpringBoot集成MyBatis

&#xff08;1&#xff09;创建SpringBoot项目 &#xff08;2&#xff09;集成MyBatis 导入坐标 <!-- 连接数据库&#xff0c;版本5 --> <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><versi…...

网络编程的概念&作用

网络编程是什么&#xff1f; 想象一下&#xff0c;你和朋友在不同的房间里&#xff0c;你们想互相传递纸条聊天。网络编程就像是编写一套规则&#xff0c;让计算机能够通过网络&#xff08;比如互联网&#xff09;互相传递信息。这些信息可以是文字、图片、视频&#xff0c;甚…...