sliping123
sliping123
采纳率50%
2018-12-17 02:53 阅读 2.6k

mybatis批量插入的时候,为什么会存储很多insert语句导致内存溢出

5

我在这个一个while 循环里,有两条sql语句,一条sql查询出来list对象,另一条sql语句
将list批量插入到数据库,用的mybatis持久层,我用的slqsession直接操作的,
但是程序运行一段时间后,堆内存一直在增长,我用了jdk下面的可视化监控工具
发现,对内存好多insert 语句被存储起来了,我并没有启用二级缓存,用的sqlsession,每一次循环重新获取,然后关闭,并且claercache,这是为什么

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • weixin_44132520 weixin_44132520 2018-12-17 02:54

    我在这个一个while 循环里,有两条sql语句,一条sql查询出来list对象,另一条sql语句
    将list批量插入到数据库,用的mybatis持久层,我用的slqsession直接操作的,
    但是程序运行一段时间后,堆内存一直在增长,我用了jdk下面的可视化监控工具
    发现,对内存好多insert 语句被存储起来了,我并没有启用二级缓存,用的sqlsession,每一次循环重新获取,然后关闭,并且claercache,这是为什么

    点赞 评论 复制链接分享
  • qq_34872748 L星火燎原 2018-12-17 03:21

    数据库的事物要温习哦,建议这样处理,inser的单独封装成一个slqsession的方法,select的单独封装成一个slqsession的方法,然后在循环里面分别调用这两个方法即可。
    简而言之就是一次我就做完一件事之后再做另外一件事。

    点赞 评论 复制链接分享

相关推荐