如何解决VB中WebBrowser控件持续打开网页占用的内存
vb中添加了webbrowers控件。打开一个网页,然后手工操作,然后在打开另一个网页,再次手工操作,这个过程是一直循环的。随着程序运行的时间久了,任务管理器里面程序的内...
vb中添加了webbrowers控件。打开一个网页,然后手工操作,然后在打开另一个网页,再次手工操作,这个过程是一直循环的。 随着程序运行的时间久了,任务管理器里面程序的内存占用越来越大。请问该如何释放webbrowers控件产生的内存呢?大概的代码:Private Sub Command2_Click()
展开
4个回答
展开全部
这个是不可能的,我做过类似的程序,打开的网页会持续在、占用内存,即使unload webbrowser也不行。我也试过在心form中加载webbrowser,用完后 unload form,但仍然不行。目前我解决这个问题的办法是,将程序分成两部分,一部分用于控制,另一部分专门用于打开网页,也就是说,每次需要打开一个网页的时候,控制部分会调用另一个exe打开,并返回想要的结果,然后让那个exe自动关闭。也只有关闭exe才能使webbrowser占用的内存释放掉。
还可以用另一个简单的办法,隔一段时间重启自己。不过这个虽然做起来简单,但在应用上有很多不方便和限制,发挥的余地更少。
如果没有用户与网页交互的需求的话,完全可以不用webbrowser控件,而是用inet控件或者API URLDownload。
inet控件相比webbrowser控件来说,占用的内存要小得多,因为它仅仅下载网页,而不下载网页中的图片或者内嵌网页。但它的缺点也是不能释放内存。只是比webbrowser稍微好点,并不能从根本上解决问题。它不能运行js,下载回来的也只是html源码,不过可以在下载页面之前用webbrowser控件访问一次指定页面,来完成登录操作,然后inet就会与webbrowser共用一个session,下载回来的页面就是已经登录之后下载的页面了。
URLDownload,这个东西基本不占用内存。不过其缺点就是如果要下载的页面需要自动登录的话,就不行了。也就是说,它只能下载回来网页源码,而不能使其中的js运行。也就是说,这个玩意只能用于不要求用户登录的网站。即,登录与不登录得到的页面源码是一样的才行。比如moko。而像renren那样的网站,就不能用这个了。
根据你的需求自己决定吧
还可以用另一个简单的办法,隔一段时间重启自己。不过这个虽然做起来简单,但在应用上有很多不方便和限制,发挥的余地更少。
如果没有用户与网页交互的需求的话,完全可以不用webbrowser控件,而是用inet控件或者API URLDownload。
inet控件相比webbrowser控件来说,占用的内存要小得多,因为它仅仅下载网页,而不下载网页中的图片或者内嵌网页。但它的缺点也是不能释放内存。只是比webbrowser稍微好点,并不能从根本上解决问题。它不能运行js,下载回来的也只是html源码,不过可以在下载页面之前用webbrowser控件访问一次指定页面,来完成登录操作,然后inet就会与webbrowser共用一个session,下载回来的页面就是已经登录之后下载的页面了。
URLDownload,这个东西基本不占用内存。不过其缺点就是如果要下载的页面需要自动登录的话,就不行了。也就是说,它只能下载回来网页源码,而不能使其中的js运行。也就是说,这个玩意只能用于不要求用户登录的网站。即,登录与不登录得到的页面源码是一样的才行。比如moko。而像renren那样的网站,就不能用这个了。
根据你的需求自己决定吧
展开全部
这个是不可能做到的,但是可以通过别的方式来释放控件。
释放控件可使用动态控件来完成,释放的时候使用set xxx=nothing
Webbrowser控件相当于开了一个IE窗口,在不停浏览网页的同时为了提高性能自然会消耗一定的内存,这些类似缓存的内存消耗是没有办法释放的,除非把Webbrowser整个控件释放掉。
释放控件可使用动态控件来完成,释放的时候使用set xxx=nothing
Webbrowser控件相当于开了一个IE窗口,在不停浏览网页的同时为了提高性能自然会消耗一定的内存,这些类似缓存的内存消耗是没有办法释放的,除非把Webbrowser整个控件释放掉。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Webbrowser控件相当于开了一个IE窗口,在不停浏览网页的同时为了提高性能自然会消耗一定的内存,这些类似缓存的内存消耗是没有办法释放的,除非你把Webbrowser整个控件释放掉。
释放控件可使用动态控件来完成,释放的时候使用set xxx=nothing
另一个问题,为什么要想着去释放内存?是你的内存不够用了,还是只是你自己看着不爽?
释放控件可使用动态控件来完成,释放的时候使用set xxx=nothing
另一个问题,为什么要想着去释放内存?是你的内存不够用了,还是只是你自己看着不爽?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
本人也遇到了这个问题,求解决
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询