工作中遇到的java 内存溢出,问题排查
来源:互联网 发布:重庆国际信托知乎 编辑:程序博客网 时间:2024/05/10 10:41
工作中遇到的java 内存溢出,问题排查
一、服务器配置及jvm运行参数
- CentOS release 6.4 (Final)
- MemTotal: 16333916 kB
- Intel(R) Xeon(R) CPU E7-4860 v2 @ 2.60GHz 8C
-Xmx4096m -Xms4096m -XX:MaxPermSize=512m -XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/heap/dump -server
二、内存溢出场景
800并发压测,一个小时,出现了内存溢出。
三、问题排查
通过查看gc情况可以看出当压测到半个小时的时候就出现了频繁FGC 如下图:
jstat -gc 7098 2000 S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 17920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796242.3 90112.0 50428.6 348 25.295 8 37.453 62.74817920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796242.3 90112.0 50428.6 348 25.295 8 37.453 62.74817920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796242.3 90112.0 50428.6 348 25.295 8 37.453 62.74817920.0 17920.0 0.0 0.0 1362432.0 1289751.1 2796544.0 2796395.6 84992.0 50428.6 348 25.295 8 43.144 68.43917920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796395.6 84992.0 50428.6 348 25.295 9 43.144 68.43917920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796395.6 84992.0 50428.6 348 25.295 9 43.144 68.43917920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796395.6 84992.0 50428.6 348 25.295 9 43.144 68.43917920.0 17920.0 0.0 0.0 1362432.0 1286917.0 2796544.0 2796468.2 80896.0 50428.6 348 25.295 9 49.018 74.31317920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796468.2 80896.0 50428.6 348 25.295 10 49.018 74.31317920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796468.2 80896.0 50428.6 348 25.295 10 49.018 74.31317920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796468.2 80896.0 50428.6 348 25.295 10 49.018 74.31317920.0 17920.0 0.0 0.0 1362432.0 1263355.4 2796544.0 2796045.4 76800.0 50428.6 348 25.295 10 54.915 80.21017920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796045.4 76800.0 50428.6 348 25.295 11 54.915 80.21017920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796045.4 76800.0 50428.6 348 25.295 11 54.915 80.21017920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796045.4 76800.0 50428.6 348 25.295 11 54.915 80.21017920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796127.0 73216.0 50428.6 348 25.295 12 60.780 86.07517920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796127.0 73216.0 50428.6 348 25.295 12 60.780 86.07517920.0 17920.0 0.0 0.0 1362432.0 1362432.0 2796544.0 2796127.0 73216.0 50428.6 348 25.295 12 60.780 86.07517920.0 17920.0 0.0 0.0 1362432.0 600666.6 2796544.0 2796332.0 70144.0 50428.6 348 25.295 12 66.545 91.840
半个小时的时候就出现了8S一次FGC,YGC基本不变。通过GC情况就可以分析出,在老年代出现了一个大对象,一直回收不下去,这样就可以定位问题了,可以通过分析jvm的内存快照。
分析jvm内存dump文件
jmap -dump:format=b,file=/opt/appdump.bin 7098
生成了dump文件通过eclipse memory analysis 插件进行分析。由于dump文件较大,先得调整eclipse jvm参数
哇,一个ArrayBlockingQueue无界队列占jvm94.48%
分析代码看到了,原来是生产者比消费者快的多。导致这样的问题。最后加大了消费者的速度,跟消费者的数量。
以上是我工作上遇到的问题,如果大家发现了问题,可以跟我一起来探讨
1 0
- 工作中遇到的java 内存溢出,问题排查
- java内存溢出问题排查
- 如何排查java内存溢出问题
- java 内存溢出 栈溢出的原因与排查方法
- java 内存溢出 栈溢出的原因与排查方法
- java 内存溢出 栈溢出的原因与排查方法
- java内存溢出 栈溢出的原因与排查方法
- java开发中常常遇到的内存溢出问题 OutOfMemory
- JVM内存溢出导致的CPU过高问题排查案例
- java-谈谈工作中遇到的问题
- 关于 自己遇到的内存溢出问题
- 线上内存溢出问题排查<实践篇>
- jvm 内存溢出问题排查方法
- java内存溢出排查正确姿势:
- Java内存溢出(OOM)异常排查指南
- JAVA内存溢出的问题
- java --内存溢出的问题
- 工作中遇到的Android内存优化问题(1)
- 委托及反射
- 奔五的人学iOS:swift获取连接的wifi名称及ap的mac地址
- Java不借助中间变量,交换两个变量的值的方法
- Java GC系列(2):Java垃圾回收是如何工作的?
- Git中tag的用法
- 工作中遇到的java 内存溢出,问题排查
- BLOG收集
- linux下mysql中文乱解决办法
- DisplayMetrics 类解析和用法
- VS2013 利用msvsmon远程调试发布到服务器IIS上程序环境配置详解
- 一个老RoR项目Redis主从同步问题的解决
- Java GC系列(3):垃圾回收器种类
- MyEclipse提示your trial period has expired时,如何手动获取MyEclipse注册码!
- Xcode集成POD的过程及问题解决