web应用中下载引发的性能问题,SSH框架. 180
应用的是ssh框架,里面的下载是这样实现的:连接对应的ftn服务器下载文件到内存的byte数组中。把byte数组通过这种形式返回给客户端@Result(name="dow...
应用的是ssh框架,里面的下载是这样实现的:
连接对应的ftn服务器下载文件到内存的byte数组中。
把byte数组通过这种形式返回给客户端
@Result(name = "download", type="stream",params={ "contentType","application/octet-stream", "inputName","inputStream", "contentDisposition","attachment;filename=${fileName}", "bufferSize","4096"})})
这个inputStream是这样定义的:
public InputStream getInputStream(){ return new ByteArrayInputStream(filebuf);//filebuf就是那个内存中的byte数组。 }
本来是没什么问题的,但是应用正式上线之后在客户端点击下载越来越慢,有的时候要等好几分钟才出来下载提示框。尝试着把应用重启后又恢复正常了。
我猜测是内存没有释放,我想问一下客户端在点击下载时,出来下载提示框之后,如果客户端一直不点击保存按钮,那么服务器端的那个下载的输出流是不是一直保持那个在内存中的状态?(是否是因为这个原因导致内存占满,性能降低?)
如果出来下载提示框之后直接alt+f4关闭页面,服务器端的输出流又会怎样呢? 展开
连接对应的ftn服务器下载文件到内存的byte数组中。
把byte数组通过这种形式返回给客户端
@Result(name = "download", type="stream",params={ "contentType","application/octet-stream", "inputName","inputStream", "contentDisposition","attachment;filename=${fileName}", "bufferSize","4096"})})
这个inputStream是这样定义的:
public InputStream getInputStream(){ return new ByteArrayInputStream(filebuf);//filebuf就是那个内存中的byte数组。 }
本来是没什么问题的,但是应用正式上线之后在客户端点击下载越来越慢,有的时候要等好几分钟才出来下载提示框。尝试着把应用重启后又恢复正常了。
我猜测是内存没有释放,我想问一下客户端在点击下载时,出来下载提示框之后,如果客户端一直不点击保存按钮,那么服务器端的那个下载的输出流是不是一直保持那个在内存中的状态?(是否是因为这个原因导致内存占满,性能降低?)
如果出来下载提示框之后直接alt+f4关闭页面,服务器端的输出流又会怎样呢? 展开
展开全部
你都自己知道可能存在问题的业务场景,何不自己亲自动手测一把?用的是sun VM的话,把Jconsole或VisualVM开着,看监控情况,必要的时候当个堆或线程快照下来,使用工具分析。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为什么是bytearrayinputstream不是fileinputstream呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询