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

JVM 调优

点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~

JVM调优是一项重要的任务,可以提高Java应用程序的性能和稳定性。掌握JVM调优需要深入了解JVM的工作原理、参数和配置选项,以及历史JVM参数的调整和优化方法。

1

了解吞吐量和停顿时间

4f8b0533afb6cefbc825a5b8c1e65bc6.png

1、吞吐量

吞吐量=运行用户代码的时间/(运行用户代码的时间+垃圾收集时间)。

比如虚拟机总共运行了100分钟,垃圾收集时间用了1分钟,吞吐量=(100-1)/100=99%。

吞吐量越大,意味着垃圾收集的时间越短,意味着用户代码可以充分利用CPU资源,尽快完成程序的运算任务。主要适合在后台运算而不需要太多交互的任务。

-XX:MaxGCPauseMillis:设置最大的垃圾收集停顿时间

-XX:GCTimeRatio:设置吞吐量的大小

2、停顿时间

停顿时间 STW(Stop The World)=垃圾收集器进行垃圾回收时中断用户请求执行响应的时间。

停顿时间越短就越适合需要和用户交互的程序,良好的响应速度能提升用户体验,越优秀的垃圾收集器,它的停顿时间一定越短,这也是所有垃圾收集器共同追求的目标。

吞吐量和停顿时间这两个指标也是评价垃圾收集器好坏的标准,其实 JVM 调优也就是在观察这两个指标,通过设置不同的参数来提升吞吐量和降低停顿时间。

2

JVM 调优维度

977e891866e71ffaa6cc3c127472223c.png

1、内存使用的维度:对堆的分析,也就是解决我们经常遇到的 OOM 问题,排查哪个对象占用的内存空间大

2、GC 的维度:也就是通过查看垃圾回收的日志文件,分析停顿时间和吞吐量这 2 个指标,通过选择不同的垃圾收集器,观察吞吐量和停顿时间来进行调优。

3、当 CPU使用率高,内存空间不足,GC 次数太多时,需要对 JVM 进行调优,调优的目标就是尽可能提高吞吐量,降低停顿时间。

以下是一些掌握JVM调优的建议:

1、分析GC日志及dump文件,判断是否需要优化,确定瓶颈问题点。

2、确定JVM调优量化目标,例如降低停顿时间、减少内存占用等。

3、熟悉JVM的参数和配置选项,例如堆内存大小、垃圾回收算法等。

4、根据历史JVM参数来调整参数,例如-Xmx和-Xms等。

5、调整垃圾回收算法和内存分配,例如使用G1垃圾回收器、调整新生代和老年代的比例等。

6、检查系统中的内存热点和CPU热点,辅助代码优化。

7、分析结果,判断是否需要优化,将转移到老年代的对象数量降低到最小。

8、不断的监控、分析和调整,直至找到优化的平衡点。

9、熟悉JVM的不稳定参数,例如-XX参数,并学会如何调整它们来提高性能和稳定性。

10、阅读JVM调优的相关文档和书籍,了解更多的知识和技巧。

通过不断的实践和总结,可以逐步提高调优技能,让Java应用程序运行得更高效、更稳定。

后面将为大家介绍 JVM 调优命令。

相关文章:

JVM 调优

点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~ JVM调优是一项重要的任务,可以提高Java应用程序的性能和稳定性。掌握JVM调优需要深入了解JVM的工作原理、参数和配置选项,以及历史JVM参数的调整和优…...

DP-GAN剩余代码

在前面计算完损失后,该进行更新: 1:netEMA是模型的生成器: 遍历生成器的state_dict,将每一个键对应的值乘以EMA_decay。 接着根据当前迭代步数计算num_upd,每1000,2500,10000代倍数就执行一次。 当num…...

在word的文本框内使用Endnote引用文献,如何保证引文编号按照上下文排序

问题 如下图所示,我在word中插入了一个文本框(为了插图),然后文本框内有引用,结果endnote自动将文本框内的引用优先排序,变成文献[1]了,而事实上应该是[31]。请问如何能让文本框内的排序也自动…...

SpringBoot项目上传至服务器

1.服务器安装JDK1.8 通过包管理器安装 2.服务器安装数据库 参考链接: CentOS 7 通过 yum 安装 MariaDB - 知乎 1. 安装之后没有密码,所以需要设置密码,使用下面的语句 set password for rootlocalhost password(111111); 2.在数据库中建…...

C++中实现多线程的三种方式

目录 1 背景2 方法 1 背景 力扣1116题 打印零和奇偶数。 2 方法 方法1&#xff1a;原子操作 class ZeroEvenOdd { private:int n;atomic<int> flag 0; public:ZeroEvenOdd(int n) {this->n n;}// printNumber(x) outputs "x", where x is an integer.…...

程序员副业指南:怎样实现年入10w+的目标?

大家好&#xff0c;这里是程序员晚枫&#xff0c;全网同名。 今天给大家分享一个大家都感兴趣的话题&#xff1a;程序员可以做什么副业&#xff0c;年入十万&#xff1f; 01 推荐 程序员可以从事以下副业&#xff0c;以获得一年收入10w&#xff1a; 兼职编程&#xff1a;可…...

excel 计算 分位值

_XLFN.QUARTILE.EXC(Result 1!G:G,2) 和 PERCENTILE 都可以用来计算一组数据的分位数&#xff0c;但是它们的计算方式略有不同。 _XLFN.QUARTILE.EXC(Result 1!G:G,2) 是 Excel 中的一个函数&#xff0c;在计算一个数据集的四分位数时使用。其中&#xff0c;第一个参数 Result…...

mongodb-windows-x86_64-4.4.23-signed.msi

...

一个SpringBoot 项目能处理多少请求?

这篇文章带大家盘一个读者遇到的面试题哈。 根据读者转述&#xff0c;面试官的原问题就是&#xff1a;一个 SpringBoot 项目能同时处理多少请求&#xff1f; 不知道你听到这个问题之后的第一反应是什么。 我大概知道他要问的是哪个方向&#xff0c;但是对于这种只有一句话的…...

Shell编程基础(十)读取多行文本到数组 写入多行文本到文件

读取多行文本到数组 & 写入多行文本到文件 读取多行文本到数组写入多行文本到文件 读取多行文本到数组 创建一个文本文件&#xff0c;内容如下 1 zhangsan 男 10 2 liis 女 12 3 wangwu 男 17读取这个文件中所有人的信息 #!/bin/bash while read u do echo $u done <…...

MyBatis学习笔记2

CRUD 1.namespace namespace中的包名要和mapper接口的包名一致&#xff01; 2.select 选择查询语句 id&#xff1a;就是对应的namespace中的方法名&#xff1b; resultType:Sql语句执行的返回值&#xff01; parameterType&#xff1a;参数类型 增删改必须提交事务&…...

spring总结

目录 什么是Spring? Spring的优缺点&#xff1f; 优点&#xff1a; 缺点&#xff1a; Spring IOC的理解 Spring AOP的理解 事务的边界为什么放在service层&#xff1f; Spring Bean的生命周期 什么是单例池&#xff1f;作用是什么&#xff1f; 单例Bean的优势 Bean…...

记录--说一说css的font-size: 0

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 平常我们说的font-size&#xff1a;0&#xff1b;就是设置字体大小为0对吧&#xff0c;但是它的用处不仅仅如此哦&#xff0c;它还可以消除子行内元素间额外多余的空白&#xff01; 问题描述&#xff…...

Matlab实现支持向量机算法(附上多个完整仿真源码)

支持向量机是一种常见的机器学习算法&#xff0c;它可以用于分类和回归问题。在Matlab中使用支持向量机&#xff0c;可以方便地构建和训练模型&#xff0c;并进行预测和评估。本文将介绍Matlab支持向量机的基本原理以及一个简单的分类案例。 文章目录 1. 支持向量机的基本原理2…...

AIGC大模型ChatGLM2-6B:国产版chatgpt本地部署及体验

1 ChatGLM2-6B介绍 ChatGLM是清华技术成果转化的公司智谱AI研发的支持中英双语的对话机器人。ChatGLM基于GLM130B千亿基础模型训练&#xff0c;它具备多领域知识、代码能力、常识推理及运用能力&#xff1b;支持与用户通过自然语言对话进行交互&#xff0c;处理多种自然语言任务…...

[国产MCU]-BL602开发实例-开发环境搭建

开发环境搭建 文章目录 开发环境搭建1、BL602介绍2、软件准备3、源码编译3.1 编译内置工程3.2 自定义工程、自定义组件添加与编译4、固件下载BL602 是一款Wi-Fi + BLE组合的芯片组,用于低功耗和高性能应用开发。无线子系统包含2.4G无线电,Wi-Fi 802.11b/g/n和BLE 5.0 基带/MA…...

春秋云镜 CVE-2020-26048

春秋云镜 CVE-2020-26048 CuppaCMS 任意文件上传 靶标介绍 CuppaCMS是一套内容管理系统&#xff08;CMS&#xff09;。 CuppaCMS 2019-11-12之前版本存在安全漏洞&#xff0c;攻击者可利用该漏洞在图像扩展内上传恶意文件&#xff0c;通过使用文件管理器提供的重命名函数的自…...

使用Golang实现一套流程可配置,适用于广告、推荐系统的业务性框架——简单应用

在诸如广告、推荐等系统中&#xff0c;我们往往会涉及过滤、召回和排序等过程。随着系统业务变得复杂&#xff0c;代码的耦合和交错会让项目跌入难以维护的深渊。于是模块化设计是复杂系统的必备基础。这篇文章介绍的业务框架脱胎于线上多人协作开发、高并发的竞价广告系统&…...

一个.NET开发的Web版Redis管理工具

今天给大家推荐一款web 版的Redis可视化工具WebRedisManager&#xff0c;即可以作为单机的web 版的Redis可视化工具来使用&#xff0c;也可以挂在服务器上多人管理使用的web 版的Redis可视化工具。 WebRedisManager基于SAEA.Socket通信框架中的SAEA.RedisSocket、SAEA.WebApi两…...

javaAPI(四):jdk8中的日期时间API

新日期时间API出现的背景 jdk8之前时间日期API 如果我们可以跟别人说&#xff1a;“我们在1502653933071见面&#xff0c;别晚了&#xff01;”那么就再简单不过了。但是我们希望时间与昼夜和四季有关&#xff0c;于是事情就变复杂了。jdk 1.0中包含了一个java.util.Date类&am…...

Electron应用上鸿蒙PC,安装包从180MB压到45MB,我做了哪些骚操作

Electron应用上鸿蒙PC&#xff0c;安装包从180MB压到45MB&#xff0c;我做了哪些骚操作 上个月老板丢给我一个任务&#xff1a;把现有的Electron应用搬到鸿蒙PC上。我花了两天把代码跑通了&#xff0c;build了一版安装包&#xff0c;一看体积——180MB。老板看了一眼&#xff0…...

3步掌握抖音内容批量下载技巧:无水印视频保存终极指南

3步掌握抖音内容批量下载技巧&#xff1a;无水印视频保存终极指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppo…...

摄影师的终极批量水印神器:semi-utils让照片保护变得如此简单

摄影师的终极批量水印神器&#xff1a;semi-utils让照片保护变得如此简单 【免费下载链接】semi-utils 一个批量添加相机机型和拍摄参数的工具&#xff0c;后续「可能」添加其他功能。 项目地址: https://gitcode.com/gh_mirrors/se/semi-utils 还在为一张张手动添加水印…...

Perplexity真实岗位薪资曝光,17城对比+职级换算公式,HR不会告诉你的薪酬锚点

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity真实岗位薪资曝光&#xff0c;17城对比职级换算公式&#xff0c;HR不会告诉你的薪酬锚点 一线数据来源与采样逻辑 本章薪资数据源自2024年Q2匿名技术社区&#xff08;如Levels.fyi、Blind、脉脉脱…...

在自动化测试场景中利用Taotoken实现多模型API调用与成本控制

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在自动化测试场景中利用Taotoken实现多模型API调用与成本控制 对于工程团队而言&#xff0c;自动化测试是保障软件质量的关键环节。…...

VK视频下载器:三步实现VKontakte视频永久保存的实用方案

VK视频下载器&#xff1a;三步实现VKontakte视频永久保存的实用方案 【免费下载链接】VK-Video-Downloader Скачивайте видео с сайта ВКонтакте в желаемом качестве 项目地址: https://gitcode.com/gh_mirrors/vk/VK-Video…...

YOLOv8安全帽识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置)

摘要 为有效监测施工现场安全帽佩戴情况&#xff0c;本研究基于YOLOv8目标检测算法构建了一套安全帽检测系统。数据集共包含5000张图像&#xff0c;涵盖helmet&#xff08;安全帽&#xff09;与head&#xff08;未戴安全帽的头部&#xff09;两类目标&#xff0c;其中训练集35…...

从汽车电子到工业控制:手把手教你用STM32CubeMX和HAL库玩转CAN总线多节点通信

从零构建工业级CAN总线通信系统&#xff1a;基于STM32CubeMX的实战指南 1. CAN总线技术基础与工业应用场景 在现代工业控制系统中&#xff0c;CAN总线因其高可靠性和实时性已成为设备间通信的事实标准。不同于普通串行通信&#xff0c;CAN采用差分信号传输和先进的错误检测机…...

如何为本地音乐库批量下载同步歌词:LRCGET终极指南

如何为本地音乐库批量下载同步歌词&#xff1a;LRCGET终极指南 【免费下载链接】lrcget Utility for mass-downloading LRC synced lyrics for your offline music library. 项目地址: https://gitcode.com/gh_mirrors/lr/lrcget 还在为海量本地音乐文件找不到歌词而烦恼…...

Linux应用目录规范实战指南

Linux应用目录规范实战指南本文面向具备一定 Linux 基础的技术人员&#xff0c;围绕应用目录规范展开&#xff0c;重点讨论配置目录、数据目录和日志目录职责分离。在中级运维和系统管理工作中&#xff0c;这类主题常常与配置变更、资源状态、权限边界、自动化任务和业务影响交…...