1
我在Spring Controller中有這個方法,我想確保不會造成內存泄漏。是否,或者不是?直接從Spring Controller返回byte []是否會造成內存泄漏?
我在Spring Controller中有這個方法,我想確保不會造成內存泄漏。是否,或者不是?直接從Spring Controller返回byte []是否會造成內存泄漏?
也許更好用org.springframework.core.io.Resource
?
@ResponseBody
@RequestMapping(value = "/document/{id}/{filename:.*}", method = RequestMethod.GET)
public Resource getDownloadEclaimsDocument(@PathVariable("id") final String id,
@PathVariable("filename") final String fileName,
final HttpServletResponse response,) {
final DmsFile dmsFile = dmsService.getByFileSystemId(id);
byte[] data = dmsService.getFileAsByteArray(dmsFile);
response.setContentType(dmsFile.getContentType());
response.setContentLength(data.length);
response.setHeader("Content-Disposition",
"attachment; filename=\"" +
MimeUtility.encodeWord(dsmFile.getName(), "utf-8", "Q") + "\"");
// This call gets a byte[] from a backend service
return new ByteArrayResource(data);
}
爲什麼你會懷疑它呢?什麼是特別關心字節數組而非其他任何事情的原因? –
我用來返回需要文件的FileSystemResource。我想避免不要在每個請求上創建(臨時)文件。由於我做了這個改變,我經常會遇到「OutOfMemoryError:超出GC開銷限制」。 – yglodt
所以你應該在問題中包含這些信息。我懷疑這是返回一個字節數組的問題 - 但這可能是'dmsService'等問題。 –