【问题标题】:Memory not release in windows store appWindows 商店应用程序中的内存未释放
【发布时间】:2013-11-30 06:27:10
【问题描述】:

我已经使用 C# 创建了 Windows 商店应用程序。我在其中使用 pdfdocument 类创建图像表单 pdf 并显示在图像中。 在按钮上单击我正在删除对象并调用垃圾收集器 处理完所有对象后为什么没有释放内存?

doc = await PdfDocument.LoadFromFileAsync(file);
        if (doc != null)
        {
            for (int i = 0; i < doc.PageCount; i++)
            {
                PdfPage pdf_page = doc.GetPage((uint)i);

                IRandomAccessStream randomStream = new InMemoryRandomAccessStream();

                await pdf_page.RenderToStreamAsync(randomStream);
                MyImage = new WriteableBitmap((int)pdf_page.Size.Width,(int)pdf_page.Size.Height);
                await MyImage.SetSourceAsync(randomStream);
                await randomStream.FlushAsync();
                randomStream.Dispose();
                pdf_page.Dispose();

             Image img1=new Image();
             img1.Source=MyImage;
           imggrid.Items.Add(img1);
            }


        }
     private void btnunload_click(object sender, RoutedEventArgs e)
    {
      imggrid.Items.Clear();
        doc = null;
        folder = null;
        file = null;
        GC.Collect();
       GC.WaitForPendingFinalizers();
        GC.Collect();
    }

【问题讨论】:

  • 8年后这个问题依然存在

标签: c# memory-leaks windows-store-apps pdf-generation


【解决方案1】:

您可以使用任何 Memroy Profiler 应用程序(如“Sci Tech .NET Memory Profiler”,...

【讨论】:

  • 那么你就没有内存泄漏!调用 GC 后,垃圾回收的内存候选和程序内存没有立即释放。如果你在乎吗?
  • 是的,但为什么会这样?有没有办法释放它?有什么方法可以让应用程序的内存恢复到初始状态?
  • 释放内存是 CLR 关注的主题,而不是你!为什么要管理内存使用情况?
  • 是的,但是当我第一次加载图像时,内存使用量高达 100 mb,并且在处理对象后它不会恢复到原始状态,所以下次我再次加载图像时,它会增加内存,这就是我的问题.
  • 我认为你应该阅读一些关于 GC 和内存使用的文档,也许 this 会有所帮助。
猜你喜欢
  • 1970-01-01
  • 2010-09-26
  • 1970-01-01
  • 1970-01-01
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多