项目运行过程中重启

背景:项目中定时处理数据时项目重启或者项目停止运行
原因:经检查发现是由于处理数据量过大导致内存不够用引起了项目的重启或者停止运行,内存使用量随着数据的处理过程持续增大,即使数据处理完毕后内存也没能释放。
内存增长截图如下
内存使用增长截图
解决方案:由于部署环境最大内存只能分配8个G,目前想到的办法只能硬编码实现释放内存
采用了调用Runtime.getRuntime().gc();方法呼叫java虚拟机的垃圾回收器运行回收内存的垃圾以保证尽快的腾出可用的内存,如下为使用了Runtime.getRuntime.gc()后
内存减少截图
当调用Runtime.getRuntime().gc();方法后系统运行垃圾回收器,调用gc()方法来建议JVM努力回收没有使用的对象内存,为了使它们占用的内存腾出来让别的对象快速使用。当调用完该方法后,JVM会尽它最大努力从所有不再使用(销毁)的对象中回收内存空间。
弊端:如果项目中还有其他服务在运行,调用gc()方法会导致正在运行的服务被暂停,故如果项目中此时还存 在服务在运行时不能调用gc()方法,此处调用gc()方法是因为项目中除了定时器触发运行的任务外无其他服务在运行,故影响不大。
当然最好的方法还是不要使用Runtime.getRuntime().gc(),但未能找到更好的办法,希望能有更好的解决办法
上述仅代表个人观点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值