【JVM性能调优】- GC调优实操思路

1、GC调优实操思路

   前面几点所提及的都是GC调优的一些方法论以及衡量指标,但在真正需要处理GC调优时,上面几点只能给你提供辅导,并不能建立完善的调优思路,因此,接下来再一同论述GC调优的具体实操思想。

   GC调优时,一般会根据Java程序所装配的垃圾收集器以及具体的GC日志来作为基础进行操作,但不同的垃圾回收器执行的GC日志都是不同的,因此并没有万能的调优策略可以满足所有的性能指标,GC优化要建立在具体的业务场景及环境中,才能达到事半功倍的效果。不过通常GC调优核心步骤如下:

  • ①明确优化目标
  • ②实施优化操作
  • ③跟踪优化结果

调优前首先需要确定的就是优化目标,到底是需要减少GC停顿,还是增大程序吞吐等,然后再根据目标排除GC日志,分析后根据日志中的分配速率、提升速率、GC频率、GC各阶段停顿时间等指标,实行具体的优化操作。

同时,也不必奢求一次优化到位,GC调优通常是需要多次进行的,一次优化往往无法达到目标预期,需要不断的根据优化后的GC日志再次制定优化策略,从而最终达到优化目标。

但GC调优的根本其实是在调“对象”,如果程序本身代码就存在问题,好比代码中存在频繁创建对象的逻辑,就算你调出花来也无济于事,必须还得从根源上解决问题,这种情况下应当采用jmap工具分析堆使用情况,查看对象分布,从而反向定位代码中的问题并加以解决。

2、GC优化总结

   凡是涉及性能调优的内容,几乎都必须建立在监控系统之上,不一定要全面,但至少能让调优前有指标数据可参考。对于监控系统中,JVM-GC这块建议统计的信息:

  • ①流量方面:流量峰值、流量均值、用活时间段等。
  • ②对象方面:分配速率、每个请求的分配均值/峰值、提升速率、每次提升总量均值等。
  • ③GC方面:MinorGC、FullGC停顿时长、GC触发间隔、GC回收总量等。
  • ..........

GC调优时的收益排序:改善代码 > 装配合适的GC回收器 > 重新设置内存比例/大小 > 调整JVM参数。

但需重点注意的是:上述的GC调优理论都是基于G1之前的分代垃圾收集器而言的,G1之后的不分代收集器,如:ZGC、ShenandoahGC等压根没必要刻意优化,自身的机制本就足够优异,而且后续的不分代收集器对外暴露的可操作参数也并不多。

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

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

相关文章

加固系统安全,防范ssh暴力破解

文章链接 加固系统安全,防范ssh暴力破解 保护实例的开源工具 – Fail2Ban

AI技术创业机会之AI基础设施与开发工具

AI基础设施与开发工具作为支撑AI技术发展与应用的关键领域,孕育着众多创业机遇。以下详述了AI基础设施与开发工具背景下AI技术的创业机会及其具体细节与内容,深入探讨各细分领域,为有志于投身这一领域的创业者提供全面、深入的商业洞察与方向…

PPOCRv3在ncnn端部署

文章目录 前言一、paddle -> pth -> pt二、pt -> pnnx -> ncnn三、ncnn模型部署参考文档 前言 之前尝试使用paddle -> onnx -> ncnn的方案,遇到了转ncnn过程中,某些层不支持的问题,经过修改ncnn模型参数,可实现…

springboot+websocket+微信小程序实现评论区功能

springbootwebsocket微信小程序实现评论区功能 WebSocketSTOMP协议具体实现1.在pom文件中添加Spring WebSocket依赖2. 创建WebSocket配置类3.接收发送消息4.前端 参考 WebSocket 1. 什么是WebSocket? WebSocket 是 HTML5 一种新的协议。它实现了浏览器与服务器全双…

深入浅出 -- 系统架构之性能优化的核心思维

“在当前的互联网开发模式下,系统访问量日涨、并发暴增、线上瓶颈等各种性能问题纷涌而至,性能优化成为了现时代开发过程中炙手可热的名词,无论是在开发、面试过程中,性能优化都是一个常谈常新的话题”。Java语言作为企业应用中的…

ArcGIS Server 安装教程

​​​​​​​ 一、环境与文件准备 1.软件环境 已安装arcgis Desktop 10.2 2.安装及授权文件 二、安装步骤 1.下载安装包和授权文件,解压后打开ArcGIS Server10.2文件夹,打开ESRI.exe。 2.点击ArcGIS for Server后的Setup,开始安装。 3.…

labelme安装和使用

源码地址: git clone https://github.com/labelmeai/labelme.git 描述 是一个图形图像注释工具,灵感来自 http://labelme.csail.mit.edu . 它是用比顿编写的,并使用QT进行图形化接口。 实例分割的VOC数据集示例。 其他例子(语义分割、B箱检测和分类)。 各种原语(多…

Flutter 使用flutter_swiper_null_safety 实现轮播图

目录 引入flutter_swiper_null_safety 在pubspec.yaml文件中dependencies下添加以下依赖 然后执行命令进行下载 实现轮播图 引入flutter_swiper_null_safety 在pubspec.yaml文件中dependencies下添加以下依赖 flutter_swiper_null_safety: ^1.0.2 然后执行命令进行下载 flu…

manga-ocr漫画日文ocr

github 下载 解压 anaconda新建环境 conda create -n manga_ocr python3.8 激活环境 conda activate manga_ocr cd到解压目录 cd /d manga-ocr-master 安装依赖包 pip install -r requirements.txt pip3 install manga-ocr 下载离线model huggingface 123云盘 解压到一个目录…

宏集PLC如何为楼宇自动化行业提供空调、供暖与通风的解决方案?

一、应用背景 楼宇自动化行业是通过将先进的技术和系统应用于建筑物中,以提高其运营效率、舒适度和能源利用效率的行业,其目标是使建筑物能够自动监控、调节和控制各种设备和系统,包括照明系统、空调系统、安全系统、通风系统、电力供应系统…

rsync 远程同步 基础介绍

目录 一 Rsync 简介 1,rsync 是什么 2,rsync 中的发起端 同步源 3,同步方式 4,备份的方式 5,常用Rsync命令 6, 配置源的两种表达方法 7,rsync做本地复制时与cp 对比 二&#xff…

【4036】基于小程序+ssm实现的软件学院会议室管理系统

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】:Java 【框架】:ssm 【…

Vue中的键盘事件

目 录 1. 概述 2. JavaScript 键盘事件 2.1 键盘事件类型 2.1.1 keydown 事件2.1.2 keypress 事件2.1.3 keyup 事件2.1.4 input 事件 2.2 键盘事件的响应顺序 3. Vue 键盘事件监听与处理 3.1 获取按键的 键码(keyCode)3.2 监听按键事件 4. Vue 按键…

java理论小作业(2)--类

第一题 1.题目: 2.解析: 首先,我们来分析Hello1类的结构和给定代码的执行流程: Hello1类中有两个成员变量,一个静态的a和一个非静态的b。静态变量a属于类本身,而非静态变量b属于类的每一个实例&#xff…

开启Java之旅——用Java实现简易的图书管理系统(24.4.7)

图书管理系统 一、设计思路 1、首先需要区分两类人,图书管理员和借书用户,不同的用户要展现不同的界面,利用继承和多态可以将其实现。 2、要将不同的操作封装起来,单独设计成为一个类,为了规范实现,需要…

gcc/g++:预编译阶段取消宏定义

预编译阶段取消宏定义,可分为两种情况:1)内部取消,2)外部取消。 示例: 1)用户程序 /*brief test demo-for-precompile-to-undef? show you hereauthor wenxuanpeiemail 15873152445163.com(q…

synchronized-锁优化

自旋锁 自旋锁是一种基于忙等待的同步机制,用于保护临界区代码的并发访问。与互斥锁相比,自旋锁尝试通过忙等待来避免线程的切换和阻塞,从而减少开销。 自旋锁的定义:自旋锁是一种基于忙等待的同步机制,在线程无法获…

蓝桥杯 第 9 场 小白入门赛 字符迁移

题目&#xff1a; 3.字符迁移【算法赛】 - 蓝桥云课 (lanqiao.cn) 思路&#xff1a; 此题通过把小写字母映射成数字&#xff0c;进行差分即可。 AC代码&#xff1a; #include<iostream> #include<cstring> #include<algorithm>using namespace std;typed…

LeetCode-33. 搜索旋转排序数组【数组 二分查找】

LeetCode-33. 搜索旋转排序数组【数组 二分查找】 题目描述&#xff1a;解题思路一&#xff1a;二分查找。1.找哨兵节点&#xff08;nums[0]或nums[-1]&#xff09;可以确定nums[mid]位于前一段或后一段有序数组中。2. 就是边界left和right的变换&#xff0c;具体看代码。解题思…

基于SpringBoot的“民宿管理平台系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“民宿管理平台系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 用户首页界面图 民宿信息管理界面图 房间预订…