JVM修炼之路【12】- GC调优 、性能调优

上一篇中 我们详细讲了内存溢出 内存泄漏 还有相关的案例。 这篇博客中我们主要了解一下GC调优。
有些新手可能会有一点 疑问—— 这两者不是一回事吗??
其实说一回事 也没错 因为GC调优本质上还是针对 堆上的内存

只不过前面我们关注的侧重点在于 不合理的代码或者设计 会造成OOM 内存的不合适使用。

这一篇我们侧重于 垃圾回收器 做各种gc动作对于系统的影响,还有垃圾回收器的参数设置

在这里插入图片描述


GC调优的核心指标:

  • 吞吐量
    在这里插入图片描述

在这里插入图片描述

  • 延迟
    在这里插入图片描述

GC调优的主要工具

还是我们熟悉的内存监控工具 Prometheus+grafana
它也可以进行专业的GC监控
在这里插入图片描述

在线的GC日志分析网站:

在这里插入图片描述

优化JVM 基础参数

建议初始堆内存和最大堆内存一样大
在这里插入图片描述

调整每个线程的栈大小
在这里插入图片描述

根据不同的系统情况 我们来选择不同的垃圾回收器:
以下是 JDK 8 中一些常见的垃圾回收器及其适用场景:

年轻代垃圾回收器:

Serial GC:适用于内存小、单核CPU的环境,重视暂停时间的应用。
Parallel GC:适用于多核CPU的通用应用,注重吞吐量。
老年代垃圾回收器:

CMS GC:适用于对暂停时间要求较高的应用,如Web应用程序。在 CMS GC 中,年轻代使用并行垃圾回收器,而老年代使用CMS算法。
G1 GC:适用于大堆内存和对暂停时间敏感的应用程序。G1 GC 可以对整个堆进行更均衡的回收,避免了CMS GC 中的一些碎片问题,并且通常能够更好地控制暂停时间。


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于机器学习中贝叶斯学习(Bayesian Learning)计算公式的理解

一、引言 在《统计学习的分类概述》中介绍了贝叶斯学习的概念和计算公式,可以看到这个公式就是概率统计理论中的贝叶斯公式,但在机器学习中这个公式与概率统计中的理解要复杂得多。 二、贝叶斯学习公式及各组成因子的含义 要理解贝叶斯学习公式&#…

【Spring Security】1.Spring Security介绍 功能介绍

文章目录 一、Spring Security介绍二、功能介绍 一、Spring Security介绍 官方文档:https://docs.spring.io/spring-security/reference/index.html 官网解释:Spring Security 是一个提供 身份验证、授权 和 针对常见攻击的保护 的框架。 它为 保护命令…

运放噪声评估的来龙去脉

运放噪声评估的来龙去脉 友情提示,运放电路的噪声分析还是比较复杂的,不论是基础理论还是对应的推导过程,都不是特别容易。考虑到兄弟们的基础参差不齐,所以我还是尽量说清楚点,这样导致看起来就有点罗里吧嗦&#xff…

刷题之动态规划-回文串

前言 大家好,我是jiantaoyab,开始刷动态规划的回文串类型相关的题目 动态规划5个步骤 状态表示 :dp数组中每一个下标对应值的含义是什么>dp[i]表示什么状态转移方程: dp[i] 等于什么1 和 2 是动态规划的核心步骤,…

市场复盘总结 20240412

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整,采用龙空龙模式 一支股票 10%的时候可以操作, 90%的时间适合空仓等待 二进三: 进级率 50% 最常用的二…

iOS开发之为什么需要引用计数

iOS开发之为什么需要引用计数 在iOS开发中,Objective-C与Swift语言都是通过引用计数进行内存管理,实际上Python、Ruby、C等语言也提供了基于引用计数的内存管理方式,它们有一个共同点,那就是都是面向对象的编程语言。 引用计数可…

响应式布局(其次)

响应式布局 一.响应式开发二.bootstrap前端开发框架1.原理2.优点3.版本问题4.使用(1)创建文件夹结构(2)创建html骨架结构(3)引入相关样式(4)书写内容 5.布局容器(已经划分…

Cascader 级联选择器 - 选择器最后一级数据为空

原因:将扁平数据转化为树形数据时,给每个项都添加了 children export const transList2Tree (list, rootPid) > {const result []list.forEach(item > {if (item.pid rootPid) {const children transList2Tree(list, item.id)item.children …

c语言多功能计算软件170

定制魏:QTWZPW,获取更多源码等 目录 题目 要求 主要代码片段 题目 设计一个计算器软件,具备如下功能提示界面。 要求 设计出界面,注意界面名称最后为自己的姓名;(20分)能够实现加、减、乘、…

【Godot4.2】CanvasItem绘图函数全解析 - 3.绘制纹理

概述 前两节我们讲述了常见几何图形绘制以及对几何图形应用变换的基础知识。 本节我们来讲如何在CanvasItem中绘制纹理。 系列目录 0.概述1.绘制简单图形2.设定绘图变换3.绘制纹理4.绘制样式盒5.绘制字符和字符串6.TextLine和TextParagraph详解7.自定义节点TextBoard8.绘制点…

C语言 函数——函数封装与程序的健壮性

目录 函数封装(Encapsulation) 如何增强程序的健壮性? 如何保证不会传入负数实参? 函数设计的基本原则 函数封装(Encapsulation) 外界对函数的影响——仅限于入口参数 函数对外界的影响——仅限于一个…

MySQL前缀索引(3/16)

前缀索引 前缀索引:MySQL支持前缀索引,允许定义字符串的一部分作为索引。如果不指定前缀长度,索引将包含整个字符串。前缀索引可以节省空间,但可能会增加查询时的记录扫描次数(因为会查询到多个前缀相同的数据&#x…

MySQL数据库的增删改查(进阶)

1.新增 将一个表中的内容插入到另一个表中. 这里需要确保查询集合的列数,类型,顺序要和插入表的列数,类型,顺序一致,这里列的名称可以不一样. values 替换成了select 查询的临时表. 2. 查询 2.1 聚合查询 2.1.1 聚合查询 函数 说明COUNT([DISTINCT] expr)返回…

python爬虫--------Beautiful Soup 案列(二十一天)

🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天…

同城O2O系统搭建实战:外卖跑腿APP发全攻略

在同城服务领域,外卖和跑腿服务成为了人们生活中不可或缺的一部分。接下来小编将带领读者进入同城O2O系统搭建的实战领域,详细介绍如何打造一款外卖跑腿APP。 第一步:需求分析 这包括对目标用户群体的调研,明确用户的需求和痛点。…

FreeFileSync|本地自动备份设置教程,终于可以不用手动同步了

前言 昨天小白给各位小伙伴分享了FreeFileSync软件,由于篇幅过长,所以整个教程中并没有教小伙伴们如何设置自动同步的办法。 今天小白就来唠唠:如何让FreeFileSync自动同步。 教程分为几种: 开机自动同步 开机之后自动执行一次…

OpenHarmony南向嵌入式:【XR806开发板指导文档】

一. 简介 芯片介绍 XR806是全志科技旗下子公司广州芯之联研发设计的一款支持WiFi和BLE的高集成度无线MCU芯片,支持OpenHarmony轻量设置系统。具有集成度高、硬件设计简单、BOM成本低、安全可靠等优点。可广泛满足 智能家居、智慧楼宇、工业互联、儿童玩具、电子竞…

【uniapp】省市区下拉列表组件

1. 效果图 2. 组件完整代码 <template><view class="custom-area-picker"><view

C语言函数指针应用——计算器(转移表)的使用

对与上一节&#xff0c;我们对指针函数已经有了深刻意识了&#xff1b;练一练吧 如果还没有学习到&#xff0c;也是没有关系的&#xff0c;可以看一看这一篇 C语言详解指针-CSDN博客https://blog.csdn.net/Asuku_/article/details/137690083希望能提高你对指针的理解 计算器的实…

在Windows下面的vscode配置cmake使用vcpkg包管理器

安装 vscode下载地址 cmake下载地址 vcpkg下载地址 创建CMake项目 // main.cpp #include <fmt/core.h>int main() {fmt::print("Hello World!\n");return 0; }// CMakeLists.txtcmake_minimum_required(VERSION 3.10)project(HelloWorld)find_package(fmt…