使用Eclipse Memory Analyzer(MAT)解决Java Web应用故障
来源:互联网 发布:虚拟定位ios软件 编辑:程序博客网 时间:2024/06/01 09:17
转载地址:http://guoyong.me/dev/solve-jvm-oom-problem-with-mat/
这周一我负责维护的一个系统突然出现故障,用户反映系统很慢,浏览器加载半天最后进了错误页面。登录到系统查看,发现系统负载很高,用sar命令进一步明确了是java进程在某一时刻后突然占据了大量CPU资源。查看应用日志,发现了OutOfMemory异常,然后使用jstat的gcutil确认JVM heap工作不正常,已经有上千次的full gc了。
用VisualGC或者jmap工具生成Headp dump文件,然后用MAT打开,生成内存泄露的分析报告,查找占用内存最大的对象并通过Thread call stack就可以定位导致问题出现的类和方法。
由于系统属旧系统,代码一直没有改动,显然是数据出了问题。最终发现是用户输入的格式不规范的数据,使得对数据做查找替换的一段代码不断地扩大1个字符串对象,导致内存消耗不断增长,gc频繁。
# sar
# sar -P ALL 1 5
# jstat -gcutil <pid_of_jvm> 1000
# jmap -dump:format=b,file=HeapDump.hprof <pid_of_jvm>
# sar -P ALL 1 5
# jstat -gcutil <pid_of_jvm> 1000
# jmap -dump:format=b,file=HeapDump.hprof <pid_of_jvm>
参考: http://wiki.eclipse.org/index.php/MemoryAnalyzer
- 使用Eclipse Memory Analyzer(MAT)解决Java Web应用故障
- eclipse MAT - Memory Analyzer Tool 使用进阶
- 学会使用eclipse Memory Analyzer --MAT
- 使用 Eclipse Memory Analyzer 进行堆转储文件分析 Eclipse Memory Analyzer(MAT)
- 使用 Eclipse Memory Analyzer 进行堆转储文件分析 Eclipse Memory Analyzer(MAT)
- eclipse/myeclipse使用Memory Analyzer Tool (mat)方法
- eclipse/myeclipse使用Memory Analyzer Tool (mat)方法
- 使用Eclipse Memory Analyzer
- Eclipse Memory Analyzer(Mat) 堆转储文件分析
- 浅尝Eclipse Memory Analyzer(MAT)
- eclipse Memory Analyzer(MAT) 内存分析
- Eclipse MAT(Memory Analyzer) 插件本地安装
- Android Memory Analyzer Tool(MAT) 使用基础
- MAT - Memory Analyzer Tool 使用进阶
- MAT(Memory Analyzer Tool)工具使用
- MAT Memory Analyzer Tool 基本使用
- Android Memory Analyzer Tool(MAT) 使用基础
- MAT(Memory Analyzer Tool)使用心得
- HTML学习:HTML的标签总结(一)
- 关于Table的边框显示
- BEIH/F:总线枚举接口劫持/伪造
- hdu 4364(矩阵相乘)
- 【面试】字符串专题
- 使用Eclipse Memory Analyzer(MAT)解决Java Web应用故障
- UITableView 基本使用方法
- 黑马程序员——JAVA(反射,内省)
- 【转载】#、##操作符,__VA_ARGS__
- Table 显示大全
- 深度解析VC中的消息传递机制
- hdoj 1205 吃糖果
- 如何用CruiseControl.Net来进行持续化集成
- unix网络编程之简介和运输层TCP/UDP