C# Webbrowser内存泄漏
我的程序使用的是c语言中的webbrowser,如果我更改了太多页面,就会出现内存泄漏问题。我找到了一些解决方案,但如果我尝试这些解决方案,例如:C# Webbrowser内存泄漏,c#,memory,webbrowser-control,C#,Memory,Webbrowser Control,我的程序使用的是c语言中的webbrowser,如果我更改了太多页面,就会出现内存泄漏问题。我找到了一些解决方案,但如果我尝试这些解决方案,例如: finally { GC.Collect(); GC.WaitForPendingFinalizers(); EmptyWorkingSet(GetCurrentProcess()); } 首先,内存恢复正常,但当我切换到page或use到webbrowser时,内存泄漏会从停止的位置恢复。我尝试了很多方法,但没有找到解决办法 此代码将释放类似于
finally
{
GC.Collect();
GC.WaitForPendingFinalizers();
EmptyWorkingSet(GetCurrentProcess());
}
首先,内存恢复正常,但当我切换到page或use到webbrowser时,内存泄漏会从停止的位置恢复。我尝试了很多方法,但没有找到解决办法 此代码将释放类似于垃圾回收的内存。我发现将其添加到计时器中以使过程自动化是很有用的
[DllImport("KERNEL32.DLL", EntryPoint = "SetProcessWorkingSetSize", SetLastError = true, CallingConvention = CallingConvention.StdCall)]
internal static extern bool SetProcessWorkingSetSize(IntPtr pProcess, int dwMinimumWorkingSetSize, int dwMaximumWorkingSetSize);
[DllImport("KERNEL32.DLL", EntryPoint = "GetCurrentProcess", SetLastError = true, CallingConvention = CallingConvention.StdCall)]
internal static extern IntPtr GetCurrentProcess();
private void button1_Click(object sender, EventArgs e)
{
IntPtr pHandle = GetCurrentProcess();
SetProcessWorkingSetSize(pHandle, -1, -1);
}
是什么让你认为内存泄漏?可能是关于IE的,我只在其他pc上尝试了web浏览器应用,我也遇到了同样的内存泄漏问题。例如,程序开始时内存使用量仅为67MB,若我更改了许多页,内存使用量将超过920MB,若我清除内存,它将再次减少近67MB。但我又只输入了一页,程序又跳转到920MB。你为什么称之为内存泄漏?只有当内存使用率持续上升时,这才是内存泄漏。另外,你是如何测量内存使用率的?可能是通过使用任务管理器?如果是这样的话,那么您看到的是虚拟内存,而不是物理内存。不一样。这段代码将把内存写入页面文件,页面文件最终也会被填满——请看这里和Azuvector的评论。