webbrowser 内存多次运行 占内存到1.7G 怎么解决
WebBrowser 占得内存释放不了private void timer2_Tick(object sender, EventArgs e)
{
wbs1 = new WebBrowser();
wbs1.Navigate(@"http://www.taobao.com");
int h = 0;
while (h < 10)
{
System.Threading.Thread.Sleep(500);
h++;
Application.DoEvents();
}
wbs1.Dispose();
wbs1 = null;
} --------------------编程问答-------------------- 我以前 也遇到过 这个问题 ,我感觉是 打开浏览器占用的内存而不是 控件占用的
--------------------编程问答-------------------- 在释放WebBrowser的地方,加上这个有点用
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
private static extern bool SetProcessWorkingSetSize(IntPtr pProcess, int dwMinimumWorkingSetSize, int dwMaximumWorkingSetSize);
IntPtr pHandle = System.Diagnostics.Process.GetCurrentProcess().Handle;
SetProcessWorkingSetSize(pHandle, -1, -1);
另外可以手动回收以下垃圾
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
虽然不能回到navigate之前的状态,但基本可以接受了,你可以试下效果看看 --------------------编程问答-------------------- IntPtr pHandle = System.Diagnostics.Process.GetCurrentProcess().Handle;
SetProcessWorkingSetSize(pHandle, -1, -1);
没什么效果啊 --------------------编程问答-------------------- 别瞎忙了,GC是没有用的,这是JS内存泄漏造成的,唯一的办法就是重启进程。
实际上,WebBrowser这种客户端控件本身应该尽量避免在非用户交互的场合使用。 --------------------编程问答-------------------- WebBrowser就是这样,无解,可以换用火狐内核的浏览器,可以参考geckoFX,这是.net可用的火狐浏览器内核控件 --------------------编程问答-------------------- WebBrowser 感觉还不完美 --------------------编程问答-------------------- WebBrowser 实质是对IE内核的一种封装
如果不是与用户交互,应该使用WebRequest/WebResponse以及这两个抽象基类的派生子类来进行http交互 --------------------编程问答-------------------- 涨知识
补充:.NET技术 , C#