记一次内存溢出处理

有一个我们公司整合第三方的系统(主要是数据同步用的),每当系统操作了一段时间后就会报内存溢出!!!
记一次内存溢出处理
文章图片
oom 检查了一下我们自己的代码,一直没发现问题,(一开始还以为是因为查询记录过大或者包含大字段的原因,一下子保存到内存中过大导致的)于是乎就想起了一些JVM监控工具,这里安利一波yourkit!!!
通过监控资源和调用栈,终于发现了是因为prepareStatement没有正确关闭造成的!!!
记一次内存溢出处理
文章图片
yourkit界面

记一次内存溢出处理
文章图片
yourkit界面

记一次内存溢出处理
文章图片
异常日志 最终发现代码里的一个隐藏坑!


记一次内存溢出处理
文章图片
代码大致是这样的 【记一次内存溢出处理】for循环里的ps并不是每一个都被关闭了!只有最后一个引用的对象才被关闭!

    推荐阅读