03月07, 2018

C#.Net中使用WebBrowser请记得及时释放页面及缓存

最近在一个 C#.NET 项目中,需要一个 WebBrowser 去打开网页并显示其内容。操作很简单,这里就不具体说了,程序运行得很好,没有任何问题,于是放到服务器上。过了几天,悲剧发生了。

几天过后,发现服务器没响应了,远程连接上去一看,提示内存不足,于是查看任务管理器,那个.net 程序占用了 1G 多内存。想了好久,程序也不大,内存占用不该那么高啊,突然灵光一现,是不是用了 WebBrowser 打开网页,但是没释放呢,就像你在浏览器中打开一个网页不关闭一样,如果这个网页各种 JS 各种统计代码,那它不是会一直运行,一直加载新内容啊,内在占用不高才怪。

原因找到了,在代码里将 WebBrowser 下载完网页内容过后,随即将它的页面释放,编译过后放到服务器,再过了几天,回到服务器上一看,妥妥的,内存占用小了好多。

具体方法如下:

1
2
3
webBrowser.Url = null;
webBrowser.Document.OpenNew(false);
webBrowser = null;

当然如果在当时申明了某些变量来保存网页的内容,也将变量设置为 NULL 吧。

本文链接:https://www.chenliqiang.cn/post/20.html

-- EOF --