当前位置: 首页 > news >正文

gbase8s数据库+mybatis问题记录

在实际使用中一般都是mybatis+数据库连接池组合使用,单独使用mybatis 连接数据库时,在循环使用PreparedStatement 时 会发生内存泄漏,PreparedStatement资源得不到释放

测试代码片段如下

drawMapper = sqlsession.getMapper(DrawMapper.class);for(int i=0;i<10000;i++) {System.out.println("i= " + i);drawMapper.mergeInto(list);sqlsession.commit();}
sqlsession.close();

函数调用如下

drawMapper.mergeInto(list)
mapperMethod.execute(sqlSession, args)
sqlSession.update
executor.update(ms, wrapCollection(parameter))
delegate.update(ms, parameterObject)
doUpdate(ms, parameter)
closeStatement(stmt)
statement.isClosed()

最后判断statement.isClosed()时,会直接调用jdbc底层的isClosed()函数,查看文档发现,该函数为jdk1.6引入,当时gbase jdbc并未实现该函数,导致判断异常,从而无法释放statement对象资源,在大量的循环中易发生内存泄漏

在使用三方的数据库连接池 如 druid,c3p0等,连接管理由连接池本身维护,不需要调用jdbc中isClosed()函数

相关文章:

  • 004 flutter基础 初始文件讲解(3)
  • 【Vim】高效编辑技巧全解析
  • Flutter 4.x 版本 webview_flutter 嵌套H5
  • 【计算机网络】应用层协议Http——构建Http服务服务器
  • Flutter 嵌套H5 传参数
  • 芯片:数字时代的算力引擎——鲲鹏、升腾、海光、Intel 全景解析
  • 快捷键IDEA
  • [网页五子棋][匹配模式]创建房间类、房间管理器、验证匹配功能,匹配模式小结
  • Python打卡训练营Day40
  • 《 PyTorch 2.3革新:torch.compile自动生成CUDA优化内核全解》
  • 使用 SymPy 操作三维向量的反对称矩阵
  • 树莓派安装openwrt搭建软路由(ImmortalWrt固件方案)
  • 历年厦门大学计算机保研上机真题
  • Prevent this information from being displayed to the user 修复方案
  • day14 leetcode-hot100-26(链表5)
  • vscode实时预览编辑markdown
  • Java Spring Boot 自定义注解详解与实践
  • Camera相机人脸识别系列专题分析之六:MTK ISP6S平台人脸识别fdnode流程FdNodeImp.cpp详解
  • 历年四川大学计算机保研上机真题
  • rm删除到回收站
  • 做天然文化石的网站/网站友情链接自动上链
  • 网站建设托管/网站设计服务企业
  • 怎样做自己的网站和发布网站/长沙网站优化对策
  • 文创产品设计公司/西安seo管理
  • 公众号如何推广产品/seo工作
  • 网站建设报价 东莞/吉林网站seo