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

java线上问题排查-占用内存的大对象

1️⃣ 查看 Java 进程与内存使用情况

  1. 使用 topps 找到 Java 进程及其 PID:

    top
    # 或者
    ps aux | grep java
    

    示例中 Java 进程 PID 为 10397
    top 中可以顺便观察 CPU 和内存占用情况。

  2. 使用 jmap -heap 查看堆内存分布:

    jmap -heap 10397
    
    • 重点关注:
      • 新生代(Young)老年代(Old) 内存使用比例
      • 是否接近堆上限(Xmx)
    • 示例判断:如果各区只用了一半,说明 不是堆内存过小 问题。

2️⃣ 找出占用内存的大对象

使用 jmap -histo:live 可以查看 JVM 堆中各类对象的数量和内存占用:

jmap -histo:live 10397 | more
  • 重点观察占用内存最大的对象:
    • 示例:com.mysql.jdbc.ByteArrayRow
  • 分析原因:
    • 这类对象通常和数据库查询结果相关
    • 可能是查询数据量过大导致堆内存占用异常
    • 解决方案:在 SQL 查询中加 LIMIT 限制结果集大小

3️⃣ 排查思路总结

步骤命令作用
查看进程和资源top
ps aux | grep java
查看堆内存分布jmap -heap <pid>判断堆大小、新生代、老年代是否异常
查看对象分布jmap -histo:live <pid>找出内存占用最大的对象
定位问题原因对照对象类型分析例如 JDBC 查询导致大对象,占用堆内存

💡 Tips

  1. moreless 可分页查看对象列表。

  2. 如果对象数量巨大,可以重定向到文件保存:

    jmap -histo:live 10397 > heap_objects.txt
    
  3. 排查完成后可结合 MAT(Memory Analyzer Tool)heap dump 文件进行可视化分析,快速找到内存泄漏来源。


http://www.dtcms.com/a/431431.html

相关文章:

  • 公司网站维护一年多少钱做网站网站代理
  • 【51单片机计时器1中断的60秒数码管倒计时】2023-1-23
  • 广州网站建设知名乐云seo淘宝上开做网站的店铺
  • 品牌型网站成功案例图片五是做好纪检监察网站建设
  • 【文献笔记】remote sensing 2024 | PointStack
  • Vue2 学习记录
  • 手写MyBatis第87弹:从SqlNode树到可执行SQL的转换奥秘
  • Hot100——普通数组
  • Linux 软件安装和进程管理
  • [创业之路-645]:手机属于通信?还是属于消费类电子?还是移动互联网?
  • 网站建设 交易保障公众号推广一个6元
  • Nodejs--如何获取前端请求
  • 【项目】基于Spring全家桶的论坛系统 【下】
  • 红黑树可视化工具
  • 深圳公司网站建设设徐州关键词优化排名
  • 三角函数速度规划方法介绍
  • 安卓基础组件020-页面跳转传递复杂数据002
  • Linux操作系统-进程(二)
  • 网站建设的工作计划有什么好字体可以导入wordpress
  • 贵州网站公司厦门seo排名
  • 湖南省建设银行网站6装饰设计网站模板
  • 求余运算和数学模运算的知识了解
  • 【LeetCode】26、80、169、189、121、122、55、45、274题解
  • 【Python刷力扣hot100】1. Two Sum
  • 网站建设属于什么行业类别wordpress数据库文件在哪里设置
  • CCF-CSP认证考试 202309-3 梯度求解
  • JavaScript 保留关键字详解
  • 赣州那里有做网站的公司中国最新军事新闻最新消息2023
  • 使用 Python 将文件上传到 Supabase Storage 并记录元数据
  • 测试报告——“问卷考试系统”项目