Windows Phone 分析和高内存
Posted
技术标签:
【中文标题】Windows Phone 分析和高内存【英文标题】:Windows Phone Profiling and high memory 【发布时间】:2013-04-27 12:18:59 【问题描述】:我目前正在创建一个 Windows Phone 应用程序,但遇到了限制正在使用的内存量的问题。我正在使用 Windows Phone 分析的内置工具。
应用程序同时执行以下操作: * 后台 API 调用(使用 Newtonsoft JSON.NET 库解析结果) * 计算要显示的对象,计算完成后绑定。
问题是,内存量真的很高。它平均使用大约 80-90 MB,窥视超过 90 MB(此应用程序必须在商店中)。
应用执行分析显示以下注意事项:系统线程和托管线程的高内存使用。它还说记忆是“纹理主导”。 所以我做了一个内存分析。
Album of profiling
分析器注意到“内存中的大量纹理分配”。大多数时候,这大约是 50%。 关于这个的问题:纹理也是自定义用户控件吗?我记得读过一些东西,每个用户控件都被保存为内存中的位图
当我查看堆摘要时,它显示了几个高值。 我应该如何解释这些数据?这些数字应该如何相互比较?
看一下类型,字符串使用了 13%。这是否意味着 String 使用的内存最多?
这是否意味着字符串使用的内存最多?还是我看错了使用最多内存的地方?例如,我应该查看堆摘要中的“开始时保留的视觉效果”吗? 如果我看那里,一些值是由我自己编写的用户控件引起的。 我使用的是 Listbox(因为它支持 UI 虚拟化),但我使用自己的控件作为 ListboxItem。我应该用 Listboxitem 替换它们吗?
我找不到关于如何使用分析工具的清晰教程:-(而且我个人觉得很难理解(例如,如果你将它与 android 分析工具进行比较)。
TL;DR:帮助理解分析工具并尝试找出占用如此多内存的原因
提前致谢!
【问题讨论】:
【参考方案1】:您的应用中的图片过多吗?大多数情况下,高内存是由未正确调整的图像或不良做法引起的。
【讨论】:
感谢您的回答!没有使用图像。我删除了它们以查明这是否是高内存使用的原因。以上是关于Windows Phone 分析和高内存的主要内容,如果未能解决你的问题,请参考以下文章
Windows Phone 中的 MPNS 有啥替代方案吗?
Windows phone profiler,堆摘要显示不完整的摘要?