内存泄露问题排查
2016-06-27 00:00
267 查看
摘要: 内存对象不释放导致垃圾回收频繁,垃圾回收线程cpu占用很高。
1. 发现cpu持续占用高,定位占用cpu比较多的进程
2. 进一步定位进程里面具体哪些线程占用高top -Hp 873
3. 上面线程pid转成16进制,jstack 873找到对应的线程,发现是垃圾回收线程
4. 看看为什么垃圾回收这么频繁,jstat -gcutil 873 1000
2. 发现内存增长非常快,年老代很快就满了,频繁的执行full gc,所以猜测是年轻代中长时间有对象不释放,直接把内存dump下来用MemoryAnalyzer分析一下 jmap -dump:format=b,file=dump1.hprof 873
用MemoryAnalyzer分析找到对应的占用内存比较多的对象
点击Details后:
找到了占用最大的对象, 根据上面的定位分析对应的代码逻辑,看为什么这个对象没有被释放。
1. 发现cpu持续占用高,定位占用cpu比较多的进程
2. 进一步定位进程里面具体哪些线程占用高top -Hp 873
3. 上面线程pid转成16进制,jstack 873找到对应的线程,发现是垃圾回收线程
4. 看看为什么垃圾回收这么频繁,jstat -gcutil 873 1000
2. 发现内存增长非常快,年老代很快就满了,频繁的执行full gc,所以猜测是年轻代中长时间有对象不释放,直接把内存dump下来用MemoryAnalyzer分析一下 jmap -dump:format=b,file=dump1.hprof 873
用MemoryAnalyzer分析找到对应的占用内存比较多的对象
点击Details后:
找到了占用最大的对象, 根据上面的定位分析对应的代码逻辑,看为什么这个对象没有被释放。
相关文章推荐
- Java 6 JVM参数选项大全(中文版)
- c语言内存泄露示例解析
- 解决js函数闭包内存泄露问题的办法
- IE下使用jQuery重置iframe地址时内存泄露问题解决办法
- 深入解析JVM对dll文件和对类的装载过程
- Android App调试内存泄露之Cursor篇
- js内存泄露的几种情况详细探讨
- Javascript 闭包引起的IE内存泄露分析
- JVM Tomcat性能实战(推荐)
- Java虚拟机JVM性能优化(二):编译器
- Java程序员必须知道的5个JVM命令行标志
- JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
- 深入解析PHP垃圾回收机制对内存泄露的处理
- PHP脚本内存泄露导致Apache频繁宕机解决方法
- 容易造成JavaScript内存泄露几个方面
- 关于js内存泄露的一个好例子
- 总结JavaScript在IE9之前版本中内存泄露问题
- Android垃圾回收机制解决内存泄露问题
- Android编程中避免内存泄露的方法总结
- C语言中的内存泄露 怎样避免与检测