栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java文件下载挂起

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java文件下载挂起

flush()方法指示流实际将输出发送到流管道。

出于各种性能原因,各种流实现可以缓存输出,而不是立即写入底层流。

例如,将IO操作保存在磁盘上,这从性能的角度来看是很昂贵的。

刷新流没有问题,即使不是为了性能,在这种情况下,这也是您想要的:在刷新之前,流似乎一直被卡住,因此您希望它实际上将内容发送给客户端。

也许您可以使用大于1024的缓冲区大小来查看更合适的缓冲区。

编辑:

循环冲洗或不循环冲洗的问题相对无关紧要。

您可以随时调用flush,因为它会调用底层OS流,无论这是否影响性能取决于情况。

例如,您可以评估200MB的RAM,其中流在其中缓冲文件比IO操作更重要(从性能角度而言)。

或者更简单地看重用户体验,即如果设法进行衡量,则看到文件实际下载比最终可能会遇到的性能问题更为重要。

如前所述,缓冲区越大,循环问题就越少。举个极端的例子,假设您的缓冲区为100兆字节,那么一个80兆字节的文件将仅获得一次刷新,无论如何它都将在请求结束时获得。

1k的缓冲区可能太小,4k更好,16k很好,这是IO调用和RAM消耗之间的权衡。

流应该自行完成其正常工作,但是,如果您看到200MB的文件已完全缓存,除非您调用flush,那么显然,该流可能正在优化性能,但带来了糟糕的用户体验,因此显然您需要在循环中使用它。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/410451.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号