一、现象

收到线上机器报警(内存使用过高),对报警的机器节点重启后恢复正常,搁天后新的节点又开始报警;

二、排查

直接对线上机器执行dump命令,由于线上机器还有流量在持续请求,因此dump时间比较长,生成的dump文件有16G+;因此我们先摘除了问题节点的流量,执行dump命令:

ps -ef|grep java 获取服务的pid

jmap -dump:live,format=b,file=/opt/mydump.hprof 3915 (只dump存活的日志)

生成的dump文件13G左右,压缩后还有3G,把mydump.hprof文件下载到本地

三、分析

用jprofiler工具进行分析,下面是分析步骤:

1.打开要分析的快照文件

2.点击最大对象

选择占用内存最大的对象,点击使用选定对象

选择传出引用,outgoing references 点击确认

3.点击reference引用查看

点击reference会显示刚才选定的最大对象的引用

展开查看详细信息,可以看到是由于线程池使用了无界队列(默认int的最大值)导致,队列中的任务有223589个,内存总占用7900MB

点击传入引用Incoming references,展开详细信息,展示更多,可以看到具体引用的类,InterflowProxy就是代码中用到线程池的类

至此,可以定位到具体占用内存过高的代码。

java程序内存占用过高问题排查相关推荐

  1. 线上java程序CPU占用过高问题排查

    简要 工作中负责的有一个项目是使用iReport+JasperReport实现的一个打印系统.最近这个线上程序经常无响应,重启后恢复正常,但是时不时还是会出现类似的问题. 最后发现是JasperRep ...

  2. 运维:你们 JAVA 服务内存占用太高,还只增不减!告警了,快来接锅

    先点赞再看,养成好习惯 某天,运维老哥突然找我:"你们的某 JAVA 服务内存占用太高,告警了!GC 后也没释放,内存只增不减,是不是内存泄漏了!" 然后我赶紧看了下监控,一切正常 ...

  3. Linux排查java程序CPU占用过高问题

    项目部署到服务器上之后,偶尔出现CPU被java程序占满的情况. 现在排查问题原因 top 首先查看系统资源占用信息,使用命令 top 发现正在运行的JAVA项目CPU占用率如果很高,那问题肯定出在这 ...

  4. java服务内存占用过高

    文章目录 1.查看内存占用高的进程 2.查看对象个数和占用内存大小 3.导出内存镜像 4.安装独立版本的Memory Analyzer工具 5.使用MAT工具进行分析 6.注意 以下代码没有特殊说明, ...

  5. Java应用CPU占用过高问题排查

    文章目录 问题描述 问题分析 如果你的 Java 应用把 CPU 100% 打满,该怎么办呢? 下面就结合实际情况来说明,对于 Java 应用,CPU 消耗过高的时,该如何处理? CPU 消耗过高分析 ...

  6. 记一次Linux系统内存占用较高得排查

    背景:收到报警,系统的内存使用率触发阈值(部分图是后补的) 1,登陆系统,使用命令查看内存分配 top 按M free -m atop 看下内存分配(cat /proc/meminfo 也可以看到一些 ...

  7. java内存过高_Java应用问题定位系列——内存占用过高

    定位Java程序内存使用过高或者内存泄漏的问题跟CPU也类似,一般可以分为以下3个步骤: 定位进程 定位线程 定位具体方法(代码部分) 一.定位进程 通过top -c(然后按Shift+M按内存排序) ...

  8. node启动之后内存占用过高解决方案

    小编一开始也是一脸懵,这是为啥呢,一个空的node项目启动之后占用内存竟然有400多M 查看项目占用cpu以及内存详情命令 docker stats | grep node 经过小编坚持不懈的找度年终 ...

  9. Linux系统内存占用过高排查方法

    以下以Ubuntu系统为例,内存占用过高可能是因为某个进程或程序占用了过多的内存,您可以按照以下步骤进行排查: 以上是一些基本的排查步骤,它们可以帮助您确定内存占用过高的原因,并采取相应的措施解决问题 ...

最新文章

  1. 行为识别Action Detection概述及资源合集(持续更新...)
  2. flutter 安装遇坑记录
  3. BigDecimal的用法
  4. MacOS上的包管理工具
  5. 文本怎么换成html,编辑html格式文本可改成txt格式(可以替换或更换某文本)新手...
  6. 经典面试题(30):以下代码将输出的结果是什么?
  7. 【UML】类图Class diagram(转)
  8. 修改notebook的默认路径_更改jupyter notebook默认存储路径
  9. impala查询语句_impala 下的SQL操作
  10. php简单使用shmop函数创建共享内存减少服务器负载
  11. selenium2.0处理case实例(二)
  12. eclipse git 上传工程 提交项目到 github
  13. React-leaflet在ant-design pro中的基本使用
  14. MapStruct 代码生成器
  15. (补)2021.1.22
  16. SU插件情报局 | Selection Toys 过滤选择(附插件安装包)
  17. Python学习笔记——python基础之python中for......else......的使用
  18. 昆仑固件涉密专用计算机,存储处理国家秘密的计算机信息系统按照涉密程序实行...
  19. iOS透明导航栏的平滑过渡(进阶版)
  20. wordcloud库应用-《唐诗三百首》词云图详解

热门文章

  1. 服务器显卡不能显示器,到底有没有关系?显卡与显示器无责任搭配
  2. 20194311姜晨昊Exp3-免杀原理与实践
  3. 计算机文档xsl,跟我学XSL(一)——第一个XML文档
  4. 标称型和数值型的区别
  5. C语言—整除问题、求余、赋值、逻辑运算符易错点
  6. Android Settings总结
  7. 公司庆典活动策划方案怎么写?需要把握6个方面
  8. R语言绘图基础篇-柱状图
  9. 电子商务系统的建设方式及技术选择
  10. 苹果在天猫新开旗舰店,狙击小程序还是为拿下中国市场?