关于使用drools内存溢出问题

       亲爱的读者您好,当你看到这篇文章时,相信你对drools已经有了一定的了解,也已经使用到您的项目中,很荣幸您也遇到了小哥曾经遇到过的问题,嘿嘿,接下来小哥说一下我曾经遇到的问题。

小哥的drools运用的比较复杂,因为业务所需,drools可以分为几个模块,小编用到了其中的drools fusion,用这个东西可以做一套cep系统,drools cep相关内容小哥会专门写一篇文章,欢迎读者浏览。小哥用到了一个时间窗口和长度窗口的概念,比如要看最近十分钟的数据,最近10条数据,所以要求数据常驻内存,所以小哥在设计时,就没释放资源,只创建了一个KieSession,一个会话,是全局的。刚开始小哥为了避免内存溢出,给每个插入drools内存的fact设置了过期时间,比如三分钟,三分钟后就会自动从会话移除,并释放相关资源,但是项目在线上运行了一段时间后,发生了内存溢出的现象,小哥经过仔细的内存分析,发现是drools导致的,过期机制不生效,过期时间到后,还有一些资源没释放,比如引用句柄。最终小哥重新拟定了技术方案,完美的解决了此问题。小哥的策略是,定时释放内存,也就是定时重新创建会话,释放之前的会话,由于小哥业务的特殊性,只能这样。

当然,也有人业务没那么特殊,可能也会遇到内存溢出的可能,小哥只说两点,如果你的数据在内存使用一次,就不使用了,那么insert完后一定要调用delete方法,再调用dispose方法,如图所示:


第二点,当规则改变时如果需要重新创建会话,记得把之前会话资源释放,调用dispose即可。

如果有问题,或看不懂的地方,欢迎联系小哥或者加群一起讨论

扫码加小哥qq


扫码加qq交流群



  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值