GC日志查看及分析实例

2024-09-01 09:28
文章标签 分析 日志 查看 实例 gc

本文主要是介绍GC日志查看及分析实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、GC日志格式

<start>: GC <before> K -> <after> k (<heap>K) , <total> ms

参数说明:

<start> GC的开始时间(秒),以JVM启动开始计算
<before> 回收前对象所使用的内存(KB)
<after> 回收后对象所使用的内存(KB)
<heap> 当前JVM的堆大小
<total> 执行回收的总时间

二、MAT工具

Eclipse Memory Analyzer Tool 原名SAP Memory Analyzer (免费离线)
特性:离线分析 需要得到JDK的内存镜像(heapdump)

 heapdump获取方式:通过jdk安装时自带的jmap命令获取:$JAVA_HOME/bin/jmap -dump:format=b,file=$APP_HOME/dumpName.hprof [Pid]jdk1.8及之后:jmap -dump:live, format=b, file=heap.bin <Pid>

使用:
File - Open Heap Dump[Overview] - Leak Suspects (有问题的对象) - See stacktrace(看堆栈信息)
File - Open Heap Dump[Overview] - Dominator Tree(对象里面的详细内容)

下载地址:链接:https://pan.baidu.com/s/1Jbm1SHSu1qNpi_PuhJ5xpg 提取码:xzb6

在这里插入图片描述

三、生产环境内存问题分析实例

1.Weblogic的GC频繁报警分析:STATUS=Warning Eden=100 FGC=40 Old=99 YGC=0
2.处理过程:
① 使用工具箱收集HeapDump和ThreadDump
② 重启告警服务
③ 验证服务是否正常(恢复正常)
3.时间分析
① 用MAT分析HeapDump文件,发现线程A占用内存较大。在执行sockRead0读操作,进一步看线程信息,queryForList()执行查询sql
② 通过dominator-tree 视图发现共有100w个对象占用接近50%的内存空间
③ 通过分析代码,发现查询的数据库中数据量比上一个月新增接近50倍
4. 时间规避和优化
将该服务的堆内存扩大

这篇关于GC日志查看及分析实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126544

相关文章

一文详解如何查看本地MySQL的安装路径

《一文详解如何查看本地MySQL的安装路径》本地安装MySQL对于初学者或者开发人员来说是一项基础技能,但在安装过程中可能会遇到各种问题,:本文主要介绍如何查看本地MySQL安装路径的相关资料,需... 目录1. 如何查看本地mysql的安装路径1.1. 方法1:通过查询本地服务1.2. 方法2:通过MyS

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细

MySQL精准控制Binlog日志数量的三种方案

《MySQL精准控制Binlog日志数量的三种方案》作为数据库管理员,你是否经常为服务器磁盘爆满而抓狂?Binlog就像数据库的“黑匣子”,默默记录着每一次数据变动,但若放任不管,几天内这些日志文件就... 目录 一招修改配置文件:永久生效的控制术1.定位my.cnf文件2.添加核心参数不重启热更新:高手应

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序

Python解决雅努斯问题实例方案详解

《Python解决雅努斯问题实例方案详解》:本文主要介绍Python解决雅努斯问题实例方案,雅努斯问题是指AI生成的3D对象在不同视角下出现不一致性的问题,即从不同角度看物体时,物体的形状会出现不... 目录一、雅努斯简介二、雅努斯问题三、示例代码四、解决方案五、完整解决方案一、雅努斯简介雅努斯(Janu

查看MySQL数据库版本的四种方法

《查看MySQL数据库版本的四种方法》查看MySQL数据库的版本信息可以通过多种方法实现,包括使用命令行工具、SQL查询语句和图形化管理工具等,以下是详细的步骤和示例代码,需要的朋友可以参考下... 目录方法一:使用命令行工具1. 使用 mysql 命令示例:方法二:使用 mysqladmin 命令示例:方

JVM垃圾回收机制之GC解读

《JVM垃圾回收机制之GC解读》:本文主要介绍JVM垃圾回收机制之GC,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、死亡对象的判断算法1.1 引用计数算法1.2 可达性分析算法二、垃圾回收算法2.1 标记-清除算法2.2 复制算法2.3 标记-整理算法2.4

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见