c# - UWP 应用 : Process Memory Usage vs Heap Usage

标签 c# windows visual-studio win-universal-app windows-10-universal

我正在尝试在 Visual Studio 中分析我的 UWP(通用 Windows 平台)应用程序,以查看导致我的进程内存使用率如此之高的原因。

我一直在使用 Visual Studio 的内置诊断工具,但一直没有成功。 它显示我的进程内存使用量为 93 兆字节,而堆显示为 12.17 MB,托管堆显示为 1.56 MB。

enter image description here

在另一个实例中,我的进程内存使用率上升到大约 458 MB 并且还在不断攀升,但是当我拍摄快照时,它没有告诉我应该导致它的任何对象的值,它声称使用的实际内存比进程内存少得多。

enter image description here

我不确定我是否只是不了解探查器的工作原理,或者我只是在做一些完全错误的事情。

最佳答案

简单的答案是 - 即使您的应用是用 C# 编写的 - 它仍然分配大量 native 内存。

通常,您在应用中加载的位图会占用大部分内存,因此我会开始考虑减少内存中位图的数量和分辨率,并确保它们不会泄漏。

其次 - 确保您的列表是虚拟化的。如果你在内存中加载 1000 张图像——即使它们很小,它们仍然会占用大量内存。默认情况下 - 像 ListBoxListViewGridView 这样的列表控件是虚拟化的,除非您将它们放在 ScrollViewer 或将默认的 ItemsPanel 更改为未虚拟化的面板。

关于c# - UWP 应用 : Process Memory Usage vs Heap Usage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35705039/

相关文章:

c# - 带有图像src的Jquery点击功能

c# - Selenium - C# - Webdriver - 无法找到元素

C# 在消息框的标题中显示 unicode 文本

python - 如何在 python 中使用 ctypes 获取 Windows 窗口名称

c# - 如何在 Zedgraph 中选择和放大 Masterpane

c# - Linq 左外连接 - DefaultIfEmpty 错误

windows - 尝试在 Windows 上编译时出错

c# - 检查加载程序集的窗口是否打开

visual-studio - Visual Studio 在调试时跳到每隔一行

C# 和 SQL 命令