如何修复内存泄漏C#

时间:2019-10-06 10:23:26

标签: c#

几秒钟后运行我的应用程序时,应用程序将获得144 MB的内存并崩溃,我该如何解决我想快速进行操作但我的应用程序崩溃如此之快的问题 抱歉,我的英语

private void timer4_Tick(object sender, EventArgs e)
{
    var request = WebRequest.Create(url);
    request.BeginGetResponse(ar =>
      {
          //inside AsynchCallBack method for request.BeginGetResponse()
          var response = (HttpWebResponse)request.EndGetResponse(ar);

          string html;
          using (var receiveStream = response.GetResponseStream())
          using (var readStream = new StreamReader(receiveStream, Encoding.UTF8))
          {
              html = readStream.ReadToEnd();
          }

          Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
     }, null
   );
}

所以我希望在没有崩溃应用的情况下使用更多的内存

1 个答案:

答案 0 :(得分:0)

为什么您认为内存泄漏? “几秒钟后应用程序将获得大约144 MB内存”这一事实并不意味着它正在泄漏。垃圾收集器可能会在以后启动。

由于其他一些未处理的异常,它很可能崩溃。

您可以做的另一件事是限制“ var response =(HttpWebResponse)request.EndGetResponse(ar)”的范围。它实现IDisposable。参见https://docs.microsoft.com/en-us/dotnet/api/system.net.httpwebresponse?view=netframework-4.8