0

我目前正在创建一个 Windows Phone 应用程序,但遇到了限制正在使用的内存量的问题。我正在使用 Windows Phone 分析的内置工具。

该应用程序同时执行以下操作: * 在后台调用 API(使用 Newtonsoft JSON.NET 库解析结果) * 计算要显示的对象,并在计算完成后绑定它。

问题是,内存量真的很高。它平均使用大约 80-90 MB,窥视超过 90 MB(此应用程序必须在商店中)。

应用程序执行分析显示以下注意事项:系统线程和托管线程的高内存使用。它还说记忆是“纹理主导”。所以我做了一个内存分析。

简介专辑

分析器注意到“内存中的大量纹理分配”。大多数时候,这大约是 50%。 关于这个的问题:纹理也是自定义用户控件吗?我记得读过一些东西,每个用户控件都被保存为内存中的位图

当我查看堆摘要时,它显示了几个高值。 我应该如何解释这些数据?这些数字应该如何相互比较?

看一下类型,字符串使用了 13%。这是否意味着 String 正在使用最多的内存?

这是否意味着字符串使用的内存最多?还是我看错了使用最多内存的地方?例如,我应该查看堆摘要中的“开始时保留的视觉效果”吗?如果我看那里,一些值是由我自己编写的用户控件引起的。我使用的是 Listbox(因为它支持 UI 虚拟化),但我使用自己的控件作为 ListboxItem。我应该用 Listboxitem 替换它们吗?

我找不到关于如何使用分析工具的清晰教程 :-( 我个人觉得很难理解(例如,如果你将它与 Android 分析工具进行比较)。

TL;DR:帮助理解分析工具并尝试找出占用如此多内存的原因

提前致谢!

4

1 回答 1

0

您的应用程序中是否有太多图像?大多数情况下,高内存是由未正确调整的图像或不良做法引起的。

于 2013-04-30T03:37:51.213 回答