Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Webbrowser内存泄漏_C#_Memory_Webbrowser Control - Fatal编程技术网

C# Webbrowser内存泄漏

C# Webbrowser内存泄漏,c#,memory,webbrowser-control,C#,Memory,Webbrowser Control,我的程序使用的是c语言中的webbrowser,如果我更改了太多页面,就会出现内存泄漏问题。我找到了一些解决方案,但如果我尝试这些解决方案,例如: finally { GC.Collect(); GC.WaitForPendingFinalizers(); EmptyWorkingSet(GetCurrentProcess()); } 首先,内存恢复正常,但当我切换到page或use到webbrowser时,内存泄漏会从停止的位置恢复。我尝试了很多方法,但没有找到解决办法 此代码将释放类似于

我的程序使用的是c语言中的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的评论。