java – JDBC4Connection中的内存泄漏
|
我试图在我们的一个Java守护进程中捕获内存泄漏,在转储内存并通过Memory Analyzer Tool进行分析之后,注意到大部分泄漏是由JDBC4Connection引起的:
我很确定我们关闭了所有的MySQL资源,但是找不到导致这种情况的原因. 抓住它有什么好办法吗?你有没有经历过这个,并建议我应该寻找什么? P.S: com.mysql.jdbc.JDBC4Connection @ 0x2aaab64ad820 | 1,856 | 87,160 | 8.28% 似乎每个JDBC都拥有大量的Hashmap条目(> 6000个对象),并且根本不释放它们. 提前致谢! 最佳答案 达夫莫几乎肯定是对的.在过去,当我们有内存泄漏时,它实际上总是MySQL JDBC驱动程序.忘记在某处关闭一个小ResultSet或Connection或Statement.每次我们使用它们来查找问题并确保它们关闭时,我最终都会审核整个代码库.至于HashMap,我也看过了.我没有查看源代码,但我的印象是MySQL驱动程序在内部存储了HashMaps中的行(至少是行值). 泄漏的ResultSet很容易.由于这个原因,在JDK 7或8中自行处理这些可靠资源的想法确实吸引了我. 您可以在某处插入一个垫片类(比如连接)来记录每个打开/关闭的资源,看看是否可以捕获泄漏的位置,而无需直接读取所有源. (编辑:南阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- mysql select query给出结果,其中ID(数字)等于文本
- [MySQL] INFORMATION_SCHEMA 数据库包含所有表的字段
- CloudFormation:用于创建数据库,表,用户或加载架构的模板R
- c# – 无法加载“MySql.Data”或其中一个依赖项.
- php – 使用命名占位符设置PDO / MySQL LIMIT
- Linux 实现增加MySQL用户的简单方法
- mysql – 如何创建Tab Delimited Select语句?
- php – 查找重叠值的时间总和
- MySQL语法错误,但仅限于通过PHP使用时
- 提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化
