如何摆脱“java.lang.OutOfMemoryError: Java heap space”错误?

问题描述 投票:0回答:0

我在休息输入中获取多部分文件并验证文件的某些属性,之后我使用 file.getResource() 将多部分文件上传到不同的服务

    try {
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.MULTIPART_FORM_DATA);
        MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
        **body.add("model", file.getResource());**
        HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers);
}

这样做时我需要将整个文件传递给下游系统, JVM 内存正在急剧增加,并且在很长一段时间内都没有释放空间,同时多个此类操作正在占用整个堆空间。

我可以使用 java 的命令行选项增加最大堆大小,但这似乎不是一个可行的解决方案。

我通过 JProfiler 注意到它在堆内存中占用了大量空间,主要问题是它在执行该 api 后没有释放空间。

我也在分享 JProfiler 的截图。您可以看到图表没有下降,因为它没有清空空间。 (https://i.stack.imgur.com/ycrRJ.png)

我正在寻找一种解决方案,我可以将文件输入并上传到下游应用程序,同时利用非常小的堆空间。

提前致谢。

java intellij-idea jprofiler
© www.soinside.com 2019 - 2024. All rights reserved.