Java应用堆外内存泄露问题排查 | 京东云技术团队
原文中文,约3100字,阅读约需8分钟。发表于: 。最近有个java应用在做压力测试,压测环境配置:CentOS系统 4核CPU 8g内存 jdk1.6.0_25,jvm配置-server -Xms2048m -Xmx2048m,出现问题,本篇文章是对此次问题的回顾和复盘
最近进行java应用压力测试时发现内存使用率从20%上升到100%,tps从1100多降低到600多。经排查发现是堆外内存泄漏导致的。通过google-perftools工具分析发现是Java_java_util_zip_Inflater_init函数一直在进行内存分配,原因是jimdb客户端使用了gzip解压缩功能,在大并发压测时造成内存泄漏。解决方法是升级jdk版本为jdk7u71,并尽量避免使用jimdb客户端的getObject和setObject方法,或设置解压缩阀值。