Java SpringBoot:我应该关闭体流http客户端吗

Java SpringBoot:我应该关闭体流http客户端吗,java,spring-boot,memory-leaks,stream,Java,Spring Boot,Memory Leaks,Stream,我编写了以下代码片段: ReferenceComposition reference = this.restTemplate.execute(uriToCall, HttpMethod.GET, null, clientHttpResponse -> this.extractReferenceFromResponse( this.getReferenceHeader(clientHttpResponse), this.getR

我编写了以下代码片段:

ReferenceComposition reference = this.restTemplate.execute(uriToCall, HttpMethod.GET, null, clientHttpResponse ->
        this.extractReferenceFromResponse(
            this.getReferenceHeader(clientHttpResponse),
            this.getReferenceStream(clientHttpResponse.getBody())
        )
    );
调用
this.extractReferenceFromResponse(..)
后,是否应关闭
clientHttpResponse.getBody()返回的
InputStream
getReferenceStream
仅使用
InputStream
创建临时文件

getReferenceStream
是:

/**
 * Creates a temporarily file.
 * @param referenceStream response stream
 * @return Temp created file
 */
private InputStream getReferenceStream(InputStream referenceStream) {
    try {
        File tmpReferenceFile = File.createTempFile("reference", "tmp");
        OutputStream contentOutputStream = new FileOutputStream(tmpReferenceFile);
        StreamUtils.copy(referenceStream, contentOutputStream);
        contentOutputStream.close();

        InputStream referenceContentStream = FileUtils.openInputStream(tmpReferenceFile);

        return referenceContentStream;
    } catch (IOException e) {
        throw new ...
    }
}
您是否检测到任何可能的内存泄漏


注意:我知道我正在返回一个open
InputStream referenceContentStream
。除了上面的代码片段之外,它会在稍后关闭。

通常的方法是打开流的人应该关闭它或指示以后如何处理该流。您提到流稍后会关闭,所以应该可以。你对这段代码有什么具体的问题吗?我们在docker容器中运行这项服务,并检测到一些“内存泄漏”问题。我们已经尝试在本地监控那些docker服务,但我们无法复制它。。。我们正在从另一个服务接收文件,当该服务接收到文件时,RAM会增加,但不会“恢复”。。。