You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring下载大文件触发OutOfMemoryError的解决方案及相关疑问

FileSystemResource与Resource的区别,以及是否能满足你的需求

先理清楚两者的关系:

  • Resource是Spring定义的顶级资源接口,它提供了一套通用的API来访问各种类型的资源(本地文件、classpath资源、字节数组资源等等),所有具体的资源实现类都要实现这个接口。
  • FileSystemResource是Resource的一个具体实现类,专门用来访问本地文件系统里的文件,底层是基于java.io.File或者java.nio.file.Path来操作的,比如你想读取本地某个配置文件,就可以用它。

那你想换成FileSystemResource来解决OOM问题,可行吗?完全不行。因为restTemplate.getForEntity(...)不管你指定的响应类型是Resource还是FileSystemResource,它都会先把整个远程响应体加载到内存里,再转换成对应的类型——也就是说,大文件还是会一次性占满内存,依然会触发OOM。FileSystemResource的定位是访问本地已存在的文件,而不是接收远程流式响应。


内容的提问来源于stack exchange,提问作者Jordi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:12:37