weixin_41678899
大洋孩
采纳率0%
2020-07-06 17:47 阅读 109

内存泄漏了求助大佬们

项目介绍:项目主要是处理图片和pdf的,正向反向都有,并且提供对外的下载功能(单个、批量),批量打包下载的可能有上百兆大小。
项目问题:内存泄漏了,内存一直增长,一直有gc但是应该是有部分一直回收不掉一直累计直到无内存可用。拉了内存快照,jmat分析还有部分代码如下,请大佬指教,手上没分了但是期待大家积极发言帮助解决

内存快照

byte数组占用很大,detail显示如下:byte数组
结合代码看的很懵逼 springmvc的问题么?
下面上代码,去掉了业务逻辑,这是对外的下载方法,批量和单个下载都差不多,返回的是ResponseEntity
对外下载方法

生成byte数组的方法:

单个下载-生成byte数组

批量下载生成byte数组方法:
图片说明

补充:后期发现这种情况后改为流输出,内存增加速度反而加快了,代码不知道写的有没有问题,下面是流输出的代码(文件是每个商品一份资料,打包文件是根据客户订单打包的)
流输出方法
流输出方法
流输出方法

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

1条回答 默认 最新

  • storm1979 storm_huang 2020-07-07 09:21

    这样做法多几个人访问就会把内存耗尽,建议试试用response的outputstream一边读一边返回,减少byte数组的内存暂用量,返回完毕后清空。

    点赞 评论 复制链接分享

相关推荐