关于response.getWriter()的关闭问题 servletjava输出流flushclose 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一般来说你看到有 close 的方法它会自动先 flush 一次再 close,明确的 flush 只是更保险,多数 API 都是会在 close 之前尝试 flush 的。out = null; 这句只要不是在条件式无穷循环中,就不是必须的。如果一个后台线程运行 7 x 24 的功能,应该在循环中明确地把变量赋值为 null。 out.flush(); 是把输出流立即发送到应答中。out.close();关掉out锁占用的资源,避免资源占用内存过多,导致一些内存溢出,或者服务器慢,最后没有响应最终挂掉。out =null,把次对象编程一个弱引用,当GC运行时方便收回。 这里不用手动去做关闭操作的,WEB容器会自动来管理的;当你的请求完毕后Response的IO操作会被自动进行检测并关闭的。 哦哦,原来是这样子,它会自动先进行一次flush那我应该就不用flush了,刚查看了下close的源代码/** * Close the stream. * @see #checkError() */ public void close() { try { synchronized (lock) { if (out == null) return; out.close(); out = null; } } catch (IOException x) { trouble = true; } }那这个out=null也应该不需要了,嗯!谢谢啊! 正确,明确地赋值在无穷式循环中是应该的,处理地不恰当当导致内存用光。比如下面这种:while(var如果不停机一直运行) { MyBigObject c = new MyBigObject(); }看起来这个变量是局部变量,但当如果这个对象占用内存较多时这个循环长时间运行会占用很多内存,可能导致 OutOfMemoberyError 。这个变量虽然声明在 while 循环中,但实际上它在当前方法内都一直存在的,只是仅在 while 循环内可见,只是可见性的差别。这个时候明确地赋值为 null 是应该的。哦哦,原来是这样子,它会自动先进行一次flush那我应该就不用flush了,刚查看了下close的源代码/** * Close the stream. * @see #checkError() */ public void close() { try { synchronized (lock) { if (out == null) return; out.close(); out = null; } } catch (IOException x) { trouble = true; } }那这个out=null也应该不需要了,嗯!谢谢啊! 一般flush没啥用,比如数据比较大,你可以flush,比如超大图片,加载1/3了你flush一下,就能看到1/3的图了。一般close足够 培训学校垃圾,大学与咱无缘,自学也难,可要怎样才能学好呢.各位同志帮忙提点建议啊 求高手帮我解析一段代码 关于js传值的问题, Struts2 与Spring 整合时出错,在线等待解答,谢谢 javascript 解析 xml 在jsp中怎样挂载显示pdf的报表?急! jsp中是否不能在函数中用out.print("XXX")? 上传下载怎么实现啊? 请问连接SQL2000的问题 萌新求救SSH框架一直报错 jsp中文显示乱码问题 uploadify在springMVC中如何设置选择完文件点击上传才上传?
out.close();关掉out锁占用的资源,避免资源占用内存过多,导致一些内存溢出,或者服务器慢,最后没有响应最终挂掉。
out =null,把次对象编程一个弱引用,当GC运行时方便收回。
* Close the stream.
* @see #checkError()
*/
public void close() {
try {
synchronized (lock) {
if (out == null)
return;
out.close();
out = null;
}
}
catch (IOException x) {
trouble = true;
}
}那这个out=null也应该不需要了,嗯!谢谢啊!
MyBigObject c = new MyBigObject();
}看起来这个变量是局部变量,但当如果这个对象占用内存较多时这个循环长时间运行会占用很多内存,可能导致 OutOfMemoberyError 。这个变量虽然声明在 while 循环中,但实际上它在当前方法内都一直存在的,只是仅在 while 循环内可见,只是可见性的差别。这个时候明确地赋值为 null 是应该的。
哦哦,原来是这样子,它会自动先进行一次flush那我应该就不用flush了,刚查看了下close的源代码/**
* Close the stream.
* @see #checkError()
*/
public void close() {
try {
synchronized (lock) {
if (out == null)
return;
out.close();
out = null;
}
}
catch (IOException x) {
trouble = true;
}
}那这个out=null也应该不需要了,嗯!谢谢啊!