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

系统发生GC内存溢出、频繁 Full GC、JVM报错

项目背景:

        服务器上主要两个系统,一个大屏的一个小系统,大屏查的那个数据库数据量很多,然后上周五客户那边说有点卡顿,我进服务器一看cpu干到98了,然后看日志报错GC内存不足了,但是当时我没看小系统的情况,然后刚刚客户说那个小系统登不上了,我进去看也是GC内存不足了,当时进系统看的时候内存的占用率其实并不高

查看两边系统的报错日志

小系统:分配的起始内存以及最大堆内存均为2048MB,在启用小系统之后任务管理器占用的内存为2357.9MB,报错时间在大系统之前并且提示堆内存不够用了

大系统:分配的起始内存以及最大堆内存均为10240MB,在启用小系统之后任务管理器占用的内存为8975.9MB

利用JDK工具查看实时的内存占用空间比

先找到服务对应的PID,然后使用jstat查看对应服务的内存分配

小系统,

  • 堆内存总共分配了大约2048 MB,比较符合JVM参数。

  • 当前实际使用约1282 MB,占用了分配的堆内存的62.5%左右。

大系统

  • Survivor + Eden + Old 区容量总和(即总堆容量):

    • 7168 + 8192 + 3478528 + 6990848 = 10419436 KB ≈ 10177 MB

    • 这与你设置的 -Xmx10240m 非常接近,说明最大堆设置已经被 JVM 识别并应用。

  • 实际使用的堆内存:

    • 7118 + 0 + 1898067.2 + 5221045.9 = 7121231.1 KB ≈ 6955 MB

    • 当前使用了 约 6.9GB 的堆内存,占比约 68%

  • Survivor + Eden + Old 区容量总和(即总堆容量):

    • 7168 + 8192 + 3478528 + 6990848 = 10419436 KB ≈ 10177 MB

    • 这与你设置的 -Xmx10240m 非常接近,说明最大堆设置已经被 JVM 识别并应用。

  • 实际使用的堆内存:

    • 7118 + 0 + 1898067.2 + 5221045.9 = 7121231.1 KB ≈ 6955 MB

    • 当前使用了 约 6.9GB 的堆内存,占比约 68%

总结:JVM 花了 过多时间(>98%)进行垃圾回收(GC),但回收了不到2%的堆内存。通常表示内存已经非常紧张,甚至快耗尽了,但是查看小系统的mapper层的时候发现数据量并不高,感觉小系统造成内存溢出的可能性并不是很大,应该是大系统占用内存过多影响到了小系统

http://www.xdnf.cn/news/9022.html

相关文章:

  • 深入Linux网络栈:套接字接口工作机制与端到端通信开发
  • 05-jenkins学习之旅-vue前项目部署实践
  • HTTP与HTTPS网络原理(7000+字详解)
  • Go语言中常量的命名规则详解
  • 获取 Stream 对象的方式
  • 【C++进阶篇】红黑树的封装(赋源码)
  • md650透传
  • 字节跳动2025年校招笔试手撕真题教程(二)
  • Spyglass:目标文件(.spq)的结构
  • 汉诺塔超级计算机数据区结构和源代码详细设计
  • vue3组件--无限滚动效果
  • 算法题(155):线段覆盖
  • ADSY1100系统级模块(SOM)4 Tx/4 Rx, 0.1 GHz to 20 GHz
  • 【Java】多线程_创建线程的四种方式
  • 【测试】——AS/400快速入门
  • 可编程幻彩LED灯条的设计
  • Python文件操作完全指南
  • 【TypeScript】结构化类型系统与标明类型系统
  • Linux 内核学习(8) --- 字符设备操作函数
  • SpringBoot中消息转换器的选择
  • some java面试题
  • 第三方检测机构如何凭借专业公正保障软件质量?资质有哪些?
  • ELF文件的作用详解
  • STL 标准模板库全面解析:容器、算法与迭代器的核心应用
  • Eigen 库实现最小二乘算法(Least Squares)
  • 如何用AI实现需求分析
  • Newtonsoft Json序列化数据不序列化默认数据
  • LeetCode 1345 跳跃游戏 IV
  • CentOS7更新 GLIBC 2.25
  • 基于亚博K210开发板——六轴姿态传感器水平测试板验证