我正在尝试在 Visual Studio 中分析我的 UWP(通用 Windows 平台)应用程序,以查看导致我的进程内存使用率如此之高的原因。
我一直在使用 Visual Studio 的内置诊断工具,但一直没有成功。 它显示我的进程内存使用量为 93 兆字节,而堆显示为 12.17 MB,托管堆显示为 1.56 MB。
在另一个实例中,我的进程内存使用率上升到大约 458 MB 并且还在不断攀升,但是当我拍摄快照时,它没有告诉我应该导致它的任何对象的值,它声称使用的实际内存比进程内存少得多。
我不确定我是否只是不了解探查器的工作原理,或者我只是在做一些完全错误的事情。
最佳答案
简单的答案是 - 即使您的应用是用 C# 编写的 - 它仍然分配大量 native 内存。
通常,您在应用中加载的位图会占用大部分内存,因此我会开始考虑减少内存中位图的数量和分辨率,并确保它们不会泄漏。
其次 - 确保您的列表是虚拟化的。如果你在内存中加载 1000 张图像——即使它们很小,它们仍然会占用大量内存。默认情况下 - 像 ListBox
、ListView
或 GridView
这样的列表控件是虚拟化的,除非您将它们放在 ScrollViewer
或将默认的 ItemsPanel
更改为未虚拟化的面板。
关于c# - UWP 应用 : Process Memory Usage vs Heap Usage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35705039/