C# windows应用商店应用程序中未释放内存
我已经用c创建了windows应用商店应用程序。在其中,我使用pdfdocument类创建图像表单pdf并显示在图像中。 单击按钮,我将删除对象并调用垃圾收集器 处理完所有对象后,为什么不释放内存C# windows应用商店应用程序中未释放内存,c#,memory-leaks,windows-store-apps,pdf-generation,C#,Memory Leaks,Windows Store Apps,Pdf Generation,我已经用c创建了windows应用商店应用程序。在其中,我使用pdfdocument类创建图像表单pdf并显示在图像中。 单击按钮,我将删除对象并调用垃圾收集器 处理完所有对象后,为什么不释放内存 doc = await PdfDocument.LoadFromFileAsync(file); if (doc != null) { for (int i = 0; i < doc.PageCount; i++)
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();
}
您可以使用任何Memroy Profiler应用程序(如“Sci-Tech.NET Memory Profiler”)查找内存泄漏,…那么您就没有内存泄漏了!调用GC后,垃圾收集的内存候选和程序内存不会立即释放。如果你在乎的话?是的,但是为什么呢?有没有办法释放它?有没有办法让应用程序的内存恢复到初始状态?释放内存是CLR关注的问题,而不是你!为什么要管理内存使用率?是的,但当我第一次加载图像时,内存使用率高达100 mb,并且在处理对象后,它将无法恢复到原始状态,因此下次再次加载图像时,它将增加内存,这是我的问题。我想你应该阅读一些关于GC和内存使用率的文档,也许可以提供帮助。