网站首页 > 博客文章 正文
一、问题描述:
一个java应用经过某种触发,CPU高,内存高。
二、分析过程:
进程编号pid=3203
(一)java进程中的线程栈信息分析
1.首先通过jstack命令查看java进程中各个线程的栈信息
jstack 3203 >1.txt 导出到1.txt文件待用
2.首先通过top -H -p pid 分析出java进程中占用cpu高的线程号
top -H -p 3203
3.获取到占用cpu高的线程编号,转换成为16进制
4.在1.txt文件中查找线程编号
5.第一个结论,导致CPU高的是GC线程。
(二)java虚拟机在不断的做GC,这就意味着内存出现了泄露。重点导向了内存分析
1.jmap -histo 3203 进行进程内存分析,发现内存占用有1个G,确实很高
2.jmap -dump:file=/home/*/dump.txt 3203 生成内存信息文件dump.txt
3.由于dump.txt文件很大,使用jhat dump.txt 无法启动,于是改变方法,将dump.txt下载到本地处理
4.通过ftp将dump.txt下载到本地,下载eclipse mat,下载地址:
http://www.eclipse.org/mat/
5.修改eclipse map的启动jvm大小,修改文件MemoryAnalyzer.ini,变更参数 -Xmx4024m
6.打开eclipse mat ,加载dump.txt文件
通过跟踪stack查看是哪里出了问题?
看看是什么占用类内存(通常都是我们没有控制好集合容器),看看下图吧
罪魁祸首是不是在这里呢??
看一个样本:
看看好吓人,这个arraylist里面居然有4843970个内容???
再看看一个样本:
这个mongo查询结果又31039,难道没有分页??
根据mat工具分析出占用内存的业务数据,可以很快定位到代码功能,进行代码级别的分析并定位问题。
总结:
两个要点:
1.根据stack定位到线程的方法
2.根据内存对象数量分析,明确导致内存高的业务数据
- 上一篇: 如何识别Java中的内存泄漏
- 下一篇: 深入浅出JVM之如何定位线上JVM各种问题
猜你喜欢
- 2025-05-14 JAVA程序员自救之路——Elasticsearch向量搜索
- 2025-05-14 探秘Java程序的“内存大爆炸”:JVM内存溢出问题排查
- 2025-05-14 Java 探秘:如何找出数组中重复的数字
- 2025-05-14 线上问题解决:java内存溢出问题分析,定位及解决
- 2025-05-14 Java虚拟机内存管理深度解读
- 2025-05-14 Java程序内存泄漏问题优化全攻略
- 2025-05-14 Jprofile解析dump文件使用详解
- 2025-05-14 Java中常见的内存泄漏场景解析
- 2025-05-14 Java内存泄漏暗杀指南!3招揪出8G“内存刺客”(附排查神器)
- 2025-05-14 Java内存分析工具——jmap
你 发表评论:
欢迎- 367℃用AI Agent治理微服务的复杂性问题|QCon
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 355℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 344℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)