【开发篇】十二、GCeasy报告分析

文章目录

  • 1、图一:正常情况
  • 2、图二:缓存对象过多
  • 3、图三:内存泄漏
  • 4、图四:频繁持续Full GC
  • 5、图五:元空间不足导致的Full GC

1、图一:正常情况

正常的堆内存如图:

  • 锯齿状
  • 对象创建后内存占用上升,Full GC后下降到和之前接近的位置

在这里插入图片描述

2、图二:缓存对象过多

特点:

  • 锯齿状
  • 对象创建后内存占用上升,Full GC后下降到和之前接近的位置
  • 但每次下降后的位置,其值也较大

这说明程序中保存了大量的缓存对象,GC后无法回收。比如程序中一些缓存用的Map,类似Map --> Redis --> MySQL的递进关系,这种不算内存泄漏,因为它有在发挥作用。这种缓存多了也不尽都是好处,可用MAT找到缓存了哪些对象。

在这里插入图片描述

3、图三:内存泄漏

  • 锯齿状
  • 每次垃圾回收之后下降到的内存位置越来越高

在这里插入图片描述

4、图四:频繁持续Full GC

如此频繁Full GC,给用户的感觉就是系统变卡了、变慢了,这是因为吞吐降低了(大量的时间用在了Full GC上,而不是用在了处理用户请求上)

在这里插入图片描述

大量的对象在内存中创建,同时JVM不停的Full GC在释放内存,可以看到内存有一定的下降(如下图中我黄色圈圈起来的白色三角),但很快就被新创建的对象又占满了

【相关的GcEasy报告】

从对象数据中也可以得到验证:每秒能产生198.76M大小的对象,晋升到老年代的也有65.85M数据,可见对象创建的确实很快

在这里插入图片描述

再看下面引起GC的原因,前两个是:

  • Ergonomics:垃圾回收器会根据自己的需要,比如保持一个较高的吞吐量或者比较短的STW,而触发的GC
  • Allocation Failure:对象在分配到年轻代或者老年代的时候,空间不足了,导致了GC。此原因引起的GC占了45次。

在这里插入图片描述

对象产生速度过快,而堆空间较小,导致了频繁的Full GC,进而影响到了客户请求的响应时间

5、图五:元空间不足导致的Full GC

特点:堆内存处于比较低的状态,但却频繁发生Full GC

在这里插入图片描述

【相关的GcEasy报告】

相关报告分析:

在这里插入图片描述

再看GC原因:将近5000次是因为元空间的大小达到了阈值(Metadata GC Threshold)

在这里插入图片描述

但发现这里JVM给元空间分配了1.2G,占用了652M,似乎没有到元空间阈值,这是JVM会动态的去计算元空间的阈值,只要元空间大小超过了这个阈值,就会触发Full GC,而这里的652可能已经多次超过了这个动态阈值

在这里插入图片描述

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

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

相关文章

【PostgreSQL】- 1.2 PostgreSQL 配置单独的数据库存储

在 Debian 或其它 Linux 系统上,为数据库创建一个单独的挂载点(如 /opt/pgdata)并将一块大容量硬盘挂载到这个目录有几个优点:数据隔离、性能优化、备份和恢复、安全性。 因此接上篇 “【PostgreSQL】- 1.1 在 Debian 12 上安装 P…

基础算法-去重字符串,辗转相除法,非递归前序遍历二叉树题型分析

目录 不同子串 辗转相除法-求最大公约数 二叉树非递归前序遍历 不同子串 从a开始,截取 a aa aaa aaab 从第二个下标开始a aa aab 从第三个 a ab 从第四个 b 使用set的唯一性,然后暴力遍历来去去重,从第一个下标开始截取aaab a aa aaa aaab…

【JS】数组详解

前言 数组是js中最常用到的数据集合,它是引用数据类型的一种(其他二者为Object和Function),但其本质是Object。 一、数组的组成 数组由三部分组成,分别是索引、元素和length。 索引:用于标识元素&#xf…

ES学习日记(三)-------第三方插件选择

前言 在学习和使用Elasticsearch的过程中,必不可少需要通过一些工具查看es的运行状态以及数据。如果都是通过rest请求,未免太过麻烦,而且也不够人性化。 目前我了解的比较主流的插件就三个,head,cerebor和elasticHD 1.head 老牌插件,功能…

原生js实现循环滚动效果

原生js实现如下图循环滚动效果 核心代码 <div class"scroll"><div class"blist" id"scrollContainer"><div class"bitem"></div>......<div class"bitem"></div></div> </di…

Long long类型比较大小

long 与 Long long类型和Long类型是不一样&#xff0c;long类型属于基本的数据类型&#xff0c;而Long是long类型的包装类。 结论 long是基本数据类型&#xff0c;判断是否相等时使用 &#xff0c;即可判断值是否相等。&#xff08;基本数据类型没有equals()方法&#xff0…

局域网找不到共享电脑怎么办?

局域网找不到共享电脑是一种常见的问题&#xff0c;给我们的共享与合作带来一定的困扰。天联组网技术可以解决这个问题。本文将介绍天联组网的原理和优势&#xff0c;并探讨其在解决局域网找不到共享电脑问题中的应用。 天联组网的原理和优势 天联组网是一种基于加速服务器的远…

基于Pytorch的验证码识别模型应用

前言 在做OCR文字识别的时候&#xff0c;或多或少会接触一些验证码图片&#xff0c;这里收集了一些验证码图片&#xff0c;可以对验证码进行识别&#xff0c;可以识别4到6位&#xff0c;纯数字型、数字字母型和纯字母型的一些验证码&#xff0c;准确率还是相当高&#xff0c;需…

第14章动态规划

动态规划 确定递推状态&#xff1a; f(n)解释 确定递推公式 程序实现 优化&#xff1a; 去除冗余状态 状态重定义 优化转移过程 斜率优化 优化-递归记忆化 if arr[n] return arr[n]递归记忆化(正向求解-递归) 或 改变求解顺序&#xff08;逆向递归求解-循环&#xff09; &…

STM32 PWM通过RC低通滤波转双极性SPWM测试

STM32 PWM通过RC低通滤波转双极性SPWM测试 &#x1f4cd;参考内容《利用是stm32cubemx实现双极性spwm调制 基于stm32f407vet6》&#x1f4fa;相关视频链接&#xff1a;https://www.bilibili.com/video/BV16S4y147hB/?spm_id_from333.788 双极性SPWM调制讲解以及基于stm32的代码…

基于 RisingWave 和 ScyllaDB 构建事件驱动应用

概览 在构建事件驱动应用时&#xff0c;人们面临着两大挑战&#xff1a;1&#xff09;低延迟处理大量数据&#xff1b;2&#xff09;实现流数据的实时摄取和转换。 结合 RisingWave 的流处理功能和 ScyllaDB 的高性能 NoSQL 数据库&#xff0c;可为构建事件驱动应用和数据管道…

cts 运行时 有时候 aapt2 的问题

05-04 16:30:18 E/AaptParser: aapt2 dump badging stderr: W/ziparchive(1050736): Unable to open ‘badging’: No such file or directory badging: error: No such file or directory. 05-04 16:30:18 E/AaptParser: Failed to run aapt2 on /xxx/android-gts/tools/./…/…

阿里云发送短信配置

依赖 <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.2.1</version> </dependency> <dependency><groupId>org.apache.httpcomponents</groupId&g…

毛细管制冷系统的设计要点

1在制冷系统的高压侧&#xff0c;不要设置储液器&#xff0c;在保证冷凝器能够容纳全部制冷剂的前提下&#xff0c;尽量减少其有效容积。 因为在采用毛细管作为节流元件的制冷系统中&#xff0c;若设置储液器或冷凝器容积过大&#xff0c;则当压缩机停机后&#xff0c;制冷剂液…

使用html实现图片相册展示设计

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>图片&#xff08;相册&#xff09;展示设计</title><link rel"stylesheet" href"./style.css"> </head> <b…

YOLOv8改进 | 检测头篇 | 2024最新HyCTAS模型提出SAttention(自研轻量化检测头 -> 适用分割、Pose、目标检测)

一、本文介绍 本文给大家带来的改进机制是由全新SOTA分割模型(Real-Time Image Segmentation via Hybrid Convolutional-TransformerArchitecture Search)HyCTAS提出的一种SelfAttention注意力机制,论文中叫该机制应用于检测头当中(论文中的分割效果展现目前是最好的)。我…

JavaScript 字符串 API

JavaScript 字符串 API 指南 JavaScript 中的字符串&#xff08;String&#xff09;是一种基本数据类型&#xff0c;表示文本数据。通过字符串 API&#xff0c;我们可以对字符串进行各种操作和处理&#xff0c;如创建、访问、修改、查找等。本指南将介绍 JavaScript 中常用的字…

【Ubuntu】Ubuntu LTS 稳定版更新策略

1、确保下载环境 sudo apt update && sudo apt upgrade -y sudo apt autoremove 2、安装更新管理器 sudo apt install update-manager-core -y 3、设置只更新稳定版 sudo vim /etc/update-manager/release-upgrades 4、开始更新&#xff0c;耐心等待 sudo do-re…

Spring面试题系列-2

Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而&#xff0c;Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言&#xff0c;绝大部分Java应用都可以从Spring中受益。 ApplicationC…

Python数据结构与算法——排序(希尔、计数、桶、基数排序)

目录 希尔排序 计数排序 桶排序 基数排序 希尔排序 希尔排序是一种分组插入排序算法 步骤&#xff1a; 首先取一个整数d1 n/2&#xff0c;将元素分为d1个组&#xff0c;每组相邻量元素之间距离为d1&#xff0c;在各组内进行直接插入排序&#xff1b; 取第二个整数d2 …