所以我不太确定内心深处到底发生了什么。
假设我们在一个 Web 应用程序中,用户请求下载一个动态生成的文件,该文件的大小可以是几 mb,甚至可能是 100 mb 或更大。应用程序这样做
String disposition = "attachment; fileName="myFile.txt";
response.setHeader("Content-Disposition", disposition);
ServletOutputStream output = response.getOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(output);
service.exportFile(ids, writer, properties);
我对整个文件永远不会完全在内存中吗?例如。生成的任何数据都会发送给用户,然后在服务器上丢弃(假设一切顺利,没有丢包)?
我问这个是因为我需要更改生成文件的库(第 3 方),而新的库不使用标准 Java IO 的东西可能是因为它只是一个 API,而实际的库在 C 中。无论如何要获得一个缓冲文档说要调用的数据
String data = buffer.toString();
(文件是ASCII)
那么我的假设是否正确,即内存消耗会受到影响,尤其是当多个用户同时下载大文件时?