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

JVM 的 Dump分析以及 GC 日志

Dump

Dump 文件是什么?

dump文件是一个进程或者系统在某一个给定的时间的快照,包含了一些程序运行时的各种信息,一般是被专业人员用来分析获取信息,然后给程序调试排错。在服务器运行我们的Java程序时,是无法跟踪代码的,所以当发生线上事故时,dump文件就成了一个很关键的分析点。简单来说内存快照。

Dump 文件怎么获得?

方式 1:自动获得

1、出现 OOME 时生成堆 dump: -XX:+HeapDumpOnOutOfMemoryError

2、生成堆文件地址:-XX:HeapDumpPath=/opt/logs/myService/HeapDumpOnOutOfMemoryError/

java -Xms2048m -Xmx2048m
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/opt/logs/myService/HeapDumpOnOutOfMemoryError/ 
-jar myService.jar

方式 2:手工执行,立即生成成当前JVM的dmp文件,1234是指Java程序的PID

[root@k8s ~]# ps -ef|grep myService
root     1234 3542583  0 09:40 pts/2    00:00:23 java -jar myService.jar
jmap -dump:format=b,file=dumplog.hprof 1234

Dump 文件的分析工具-Jrofiler

用来分析 dump文件

实战:排查内存溢出OOM 问题

重点:当前对象集、最大对象

传入引用 查看持有改对象的所有引用

出现 OOM 问题原因:可能是对象分配太大,或者堆内存不足,适当增加堆内存,合理配置堆内存的比例,以及进入老年代的大对象大小

# 初始堆大小 (建议设置为最大堆的1/4到1/2)
-Xms4g # 最大堆大小 (根据服务器可用内存设置,通常不超过物理内存的80%)
-Xmx8g# 年轻代大小 (建议为堆的1/3到1/2)
-XX:NewSize=3g
-XX:MaxNewSize=3g# 或者使用比例设置年轻代 (推荐)
-XX:NewRatio=2  # 年轻代与老年代比例为1:2# 设置大对象直接进入老年代的阈值 (默认约1MB)
-XX:PretenureSizeThreshold=2m# 并行收集器相关配置 (适用于大对象)
-XX:+UseParallelGC  # 或 UseG1GC / UseConcMarkSweepGC
-XX:ParallelGCThreads=4  # 根据CPU核心数调整

实战: 内存泄露

内存泄露的表现:

老年代逐步增长 FullGC 频繁、老年代、年轻代的内存一直处于高位无法释放

检测:

  1. 在应用启动后不久获取第一个堆快照

  2. 运行一段时间后获取第二个快照

  3. 使用 Compare 功能对比两个快照,查看哪些类实例增长最多

     4. 观察哪一个类实例比较多,一直不衰减,一直在增长

GC 日志

GC 日志获取

分析 GCeasy

http://www.lqws.cn/news/544051.html

相关文章:

  • Vulkan模型查看器设计:相机类与三维变换
  • 【Python数据库】Python连接3种数据库方法(SQLite\MySQL\PostgreSQL)
  • 人工智能-基础篇-4-人工智能AI、机器学习ML和深度学习DL之间的关系
  • 人工智能-基础篇-3-什么是深度学习?(DL,卷积神经网络CNN,循环神经网络RNN,Transformer等)
  • fish安装node.js环境
  • 【CMake基础入门教程】第八课:构建并导出可复用的 CMake 库(支持 find_package() 查找)
  • 视觉疲劳检测如何优化智能驾驶的险情管理
  • Java练习题精选16-20
  • C++01背包问题
  • 汇总表支持表头分组,查询组件查询框可以调整高度,DataEase开源BI工具v2.10.11 LTS版本发布
  • ESP32 008 MicroPython Web框架库 Microdot 实现的网络文件服务器
  • A Machine Learning Approach for Non-blind Image Deconvolution论文阅读
  • 金蝶云星空客户端自定义控件插件-WPF实现自定义控件
  • 电磁波是如何传递信息的?
  • 鸿蒙 List 组件解析:从基础列表到高性能界面开发指南
  • 前端 E2E 测试实践:打造稳定 Web 应用的利器!
  • 海外 AI 部署:中国出海企业如何选择稳定、安全的云 GPU 基础设施?
  • 扬州搓澡非遗解码:三把刀文化的“水包皮“
  • 010 【入门】链表入门题目-合并两个有序链表
  • Linux驱动学习day9(异常与中断处理)
  • 华为云Flexus+DeepSeek征文|基于Dify构建故事绘本制作工作流
  • Spark 写入hive表解析
  • Spring Boot项目开发实战销售管理系统——系统设计!
  • 知名流体控制解决方案供应商“永盛科技”与商派ShopeX达成B2B商城项目合作
  • iOS 远程调试与离线排查实战:构建非现场问题复现机制
  • 报道称CoreWeave洽谈收购Core Scientific,后者涨超30%
  • NV025NV033美光固态闪存NV038NV040
  • 《二分枚举答案(配合数据结构)》题集
  • Python Selenium 滚动到特定元素
  • Selenium基本用法