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

G1垃圾回收器的FullGC

如何确定GarbageFirst回收器发生的是FullGC ?

必须出现FullGC字样才算是FUllGC,例如下图:因为内存分配失败(Allocation Failure)导致

如果不出现FullGC的字样说明它不是FUllGC,并不像Serial GC、ParallelGC的在老年代不足发生叫的FullGC。

FullGC之前日志展示经历的过程:

concurrent-root-region-scan-start:并发Root扫描

concurrent-root-region-scan-end:Root扫描完了

concurrent-mark-start:并发标记阶段(在上图箭头上一行)

FullGC

如何监控FullGC日志?

首先在启动参数上加如下参数:代表在jar包同位置实时生成回收日志

-Xloggc:gc.log

如何监控堆Dump日志?

1.启动参数配置

在线程出现OOM(Out of memory)的时候如果配置了参数则会产生当前的堆快照在dump文件中:(gc.dump也是代表与jar包同位置的快照文件)

-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=gc.dump

堆内存快照是一个 .hprof 文件,包含程序运行时堆内存的详细信息,包括对象、类、引用等,用于分析内存泄漏或对象分配问题。

2.运行时执行jmap命令

jmap -dump:format=b,file=/路径/名.hprof 进程号

说明:这个也命令是生成堆转储快照,只不过它在不触发OOM的时候人可以手动执行命令调用,但是要注意这个操作必然会带来Stop the world使JVM停顿用来抓取快照,线上请谨慎使用

案例

1.比如我这有个kafka进程(kafka运行在JVM)

2.执行jmap dump命令并下载

对这个进程执行jmap -dump:format=b,file=/data/dumptest/heap_dump.hprof 21896 命令并下载到本地进行分析

3.打开Memory Analyzer (MAT)进行分析

 

 

 

自动检测堆转储中的内存泄漏嫌疑点

4.可能遇到问题——快照文件太大,内存不够

 


http://www.mrgr.cn/news/83239.html

相关文章:

  • 用 Python 绘制可爱的招财猫
  • 2025新年源码免费送
  • 超完整Docker学习记录,Docker常用命令详解
  • python-leetcode-文本左右对齐
  • laravel 批量更新:‌INSERT ... ON DUPLICATE KEY UPDATE
  • docker安装codeserver 运行vite项目(linux)
  • SpringBoot3集成案例
  • 时频分析之S变换
  • 开源生成式物理引擎Genesis,可模拟世界万物
  • React中createRoot函数原理解读——Element对象与Fiber对象、FiberRootNode与HostRootNode
  • open3d+win10+vs2019环境安装配置及测试
  • YangQG 面试题汇总
  • 面向对象分析与设计Python版 分析与设计概述
  • 概率论与数理统计总复习
  • 【机器视觉】OpenCV 图像轮廓(查找/绘制轮廓、轮廓面积/周长、多边形逼近与凸包、外接矩形)
  • vue的路由守卫逻辑处理不当导致部署在nginx上无法捕捉后端异步响应消息等问题
  • Kubernetes 使用自定义资源(CRD)扩展API
  • 前后端分离的vue3项目改造成nuxt3项目
  • 通过Apache、Nginx限制直接访问public下的静态文件
  • 生物医学信号处理--随机信号的数字特征
  • C++ 中常见的预处理指令总结
  • 《机器学习》——贝叶斯算法
  • linux音视频采集技术: v4l2
  • 01-springclound
  • 《机器学习》之贝叶斯(Bayes)算法
  • 后端:Spring(IOC、AOP)