加载文件后释放内存

时间:2016-01-18 23:39:26

标签: c# memory uwp

首先,我承认我不太了解内存管理,所以我可能会遗漏一些明显的东西。我一直在浏览诸如this之类的文章等,但没有发现任何有用的信息。

我正在遍历StorageFile的集合并为每个SlideTemplate创建一个SlideTemplate。 (UserControl只是InkCanvas,其中包含InkCanvas。)然后,我将笔划从文件流加载到SlideTemplate并将ObservableCollection<SlideTemplate>添加到foreach (var slide in slides) { using (var stream = await slide.OpenSequentialReadAsync()) { InkCanvas inkCanvas = new InkCanvas(); SlideTemplate newSlide = new SlideTemplate(); await inkCanvas.InkPresenter.StrokeContainer.LoadAsync(stream); newSlide.Set_Canvas(inkCanvas); newSlide.Set_PenSize(new Size(DataModel.Instance.CurrentProject.PenSize, DataModel.Instance.CurrentProject.PenSize)); DataModel.Instance.CurrentProject.Slides.Add(newSlide); } } 我的inkCanvas = null; GC.Collect(); GC.WaitForPendingFinalizers(); 。这是代码:

foreach

当它达到大约61或62时,它会在“new InkCanvas()”上抛出一个异常,说它“无法创建...... InkCanvas的实例”。以下是VS Diagnostic工具抛出异常时的内存使用情况:

Memory Usage

内存使用量在循环播放时不断攀升。把这个:

pip install regex
\Python27\Scripts\中的

实际上成功加载了所有80个幻灯片,但一旦完成,内存使用量就会保持不变并且不会再次下降。然后返回(使用类似的方法将墨迹笔划保存回文件)并重新加载项目使用大约150MB的内存引发相同的错误。有人可以解释一下这里有什么用,或者链接到一篇有用的文章吗?

0 个答案:

没有答案
相关问题