1

我的 silverlight 应用程序遇到了一些问题。

我的应用程序看起来像一个图像管理器。您可以打开一些图像、编辑、查看等。

我的问题是,当您添加一些图像并删除这些图像后,内存不会恢复到添加这些图像之前使用的相同数量。如果您重复这些操作(添加图像并在删除这些图像之后),内存不会停止上升。

为什么会发生?

我创建了一个新的 silverlight 5 项目来重新创建这个场景,测试一些代码并尝试找出正在发生的事情。

在新项目中,我有一个 StackPanel 和 3 个具有以下操作的按钮:

1- 在 StackPanel 中添加 1000 个按钮;

2- 删除 StackPanel 的所有孩子;

3-调用GC.Collect;

我重复调用相同的动作:add(1)、remove(2)、call GC(3)

在我重复了几次相同的操作(添加和删除)之后。我观察到我的第一个应用程序的相同结果,内存不会停止上升。即使在我调用 GC.Collect 之后,内存也不会被释放。我现在不知道发生了什么。是否可能是silverlight的内存泄漏?

4

1 回答 1

0

你的电脑是“平板电脑”吗?

如果您的计算机上运行着自动化客户端,Silverlight 自动化就会发挥作用。最常见的是:

  • 平板电脑输入服务(换句话说,所有“类似平板电脑”的电脑)
  • 自动化测试工具
  • 屏幕阅读器(和其他可访问性软件)

这使得 silverlight 变得一团糟,并导致许多错误,并且几乎总是让一切都像疯了一样泄漏。

我通过在我的 html 中设置这个参数来禁用自动化:

<param name="windowless" value="true" />

您可以在此处阅读更多信息:Silverlight + MVVM + 绑定 = 内存泄漏?

于 2012-06-23T21:44:36.197 回答