网络编程(二):有多少资源,需要关闭
2012-07-19 12:48
148 查看
有过几年编程经验的人都知道,打开的资源用完之后是要关闭的。那么,所谓的“资源”都有哪些?你养成关闭这些“资源”的习惯了吗?
一般来说,显式打开的,不太容易忘记关闭,比如数据库连接。还有,文件类和流类虽然不用显式打开,但是我们在日常生活中已经养成了“打开文件”和“关闭文件”的习惯,翻译成代码,自然不是难事。但是其他的非显式打开的资源,就没有这么容易记起来,甚至,你都不知道他们是“资源”。
最近写了一个工具,利用HttpWebRequest多线程跟Web服务器交互。症状是数据传输非常慢,尽管只有一丁点数据量。从工具本身的代码入手,调试发现,竟然是GetResponse操作超时。在对Web服务器无可奈何的情况下,我只好死马当活马医,求助于万能的Google和Baidu了。当查到有人提到“Http默认并发数是2”,“HttpWebResponse需要关闭”的时候,我知道自己发现宝了。难道Intenet连接也是资源,答案是Yes。找到问题所在了,解决就很简单。
1、每次使用完Response之后,将其关闭:response.close();
2、修改Http的并发连接限制:System.Net.ServicePointManager.DefaultConnectionLimit = N;//N是你所用大的最大并发连接数,有人建议不要超过 1024。
一般来说,显式打开的,不太容易忘记关闭,比如数据库连接。还有,文件类和流类虽然不用显式打开,但是我们在日常生活中已经养成了“打开文件”和“关闭文件”的习惯,翻译成代码,自然不是难事。但是其他的非显式打开的资源,就没有这么容易记起来,甚至,你都不知道他们是“资源”。
最近写了一个工具,利用HttpWebRequest多线程跟Web服务器交互。症状是数据传输非常慢,尽管只有一丁点数据量。从工具本身的代码入手,调试发现,竟然是GetResponse操作超时。在对Web服务器无可奈何的情况下,我只好死马当活马医,求助于万能的Google和Baidu了。当查到有人提到“Http默认并发数是2”,“HttpWebResponse需要关闭”的时候,我知道自己发现宝了。难道Intenet连接也是资源,答案是Yes。找到问题所在了,解决就很简单。
1、每次使用完Response之后,将其关闭:response.close();
2、修改Http的并发连接限制:System.Net.ServicePointManager.DefaultConnectionLimit = N;//N是你所用大的最大并发连接数,有人建议不要超过 1024。
相关文章推荐
- SharePoint【学习笔记】-- SharePoint 2010 究竟需要占用多少服务器资源?
- SharePoint 2010 究竟需要占用多少服务器资源?
- 为什么Java有GC还需要自己来关闭某些资源?
- 阿里云前端周刊 - 第 29 期 RESTful API 设计最佳实践_项目资源的URL应该如何设计?用名词复数还是用名词单数?一个资源需要多少个URL?
- SharePoint 2010 究竟需要占用多少服务器资源?
- 使用window.open()方式打开新页面,关闭后浏览器不能释放资源,需要等待主界面关闭后才能释放
- SharePoint 2010 究竟需要占用多少服务器资源?
- 阿里云前端周刊 - 第 29 期 RESTful API 设计最佳实践_项目资源的URL应该如何设计?用名词复数还是用名词单数?一个资源需要多少个URL?
- 在RESTFUL风格中怎样定义需要多个参数才能确定的资源路径
- 论文发表费用大概需要多少
- 打开有avi的文件夹,explorer就出错,需要关闭
- c语言:输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n
- hadoop需要多少个reducer?
- 11g RAC集群启动关闭、各种资源检查、配置信息查看汇总。
- 通过回调函数 调用parent窗体 关闭子窗体 因为没有运行完需要的函数 回调关闭会出错 需要延时执行
- "Microsoft Office Word 遇到问题需要关闭"如何
- 一些程序员需要知道的资源
- 访问需要HTTP Basic Authentication认证的资源的各种语言的实现
- 毁灭世界需要多少核武器?
- 关于点击某个按钮需要Edittext和软键盘一起弹出的操作和监听软键盘的关闭