开发者社区> 问答> 正文

JdbcDataSourceStat 持有太多的对象,并且不进行释放,最终导致OOM

T38.png

如上图所示,并且已经关闭了状态监控,依然内存疯涨

原提问者GitHub用户raydl007

展开
收起
山海行 2023-07-05 19:36:18 107 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    你描述的这个JdbcDataSourceStat类似会出现“内存泄漏”的问题,长时间运行后最终导致OOM。

    这主要是由于两个原因:

    JdbcDataSourceStat持有太多的对象引用,不进行释放。
    比如每次查询数据库后,会多创建一个StatementStat对象,但不会后续清理。

    StatementStat对象持有对Statement和ResultSet对象的引用,但不进行关闭。
    由于Statement和ResultSet属于有限资源,所以不进行关闭就会导致泄漏。

    2023-07-30 16:17:07
    赞同 展开评论 打赏
  • #关闭druid的监控,该监控会耗尽内存 spring.datasource.druid.stat-view-servlet.enabled=false spring.datasource.druid.web-stat-filter.enabled=false spring.datasource.druid.filter.stat.enabled=false

    这样改就可以了

    原回答者GitHub用户raydl007

    2023-07-06 11:01:57
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载