0

我不知道你们中有多少人观察到这一点,当我们最小化一个复杂的 WPF 应用程序时,我们可以观察到使用内存的减少。此外,当我们恢复 WPF 窗口时,它会重新获得该内存。

我的问题是这个

  1. 这就是我们所说的显存吗?
  2. 我们在 WinForms 应用程序中也观察到同样的事情吗?我问这个是因为我看到 MSWord 在我最小化它时没有做任何类似的事情。
  3. 另外,如果windows操作系统能很好地管理这个内存,那么我们为什么不虚拟化所有东西,而不是虚拟化堆栈面板,为什么我们不让滚动查看器成为UI虚拟化的大师呢?

我希望我能得到一些有趣的答案。

4

1 回答 1

1

显存是完全不同的东西。图形卡使用它来存储纹理、屏幕图像、着色器程序输入/输出等。

WPF 使用更多的视频内存,因为它使用图形加速、纹理、着色器和离屏表面。

WinForms 应用程序不会——它们只使用 GDI 进行渲染,因此除非设计发生在屏幕外,否则使用的视频内存要少得多。

最后,如果不使用专用工具,您将无法测量显存。在任务管理器中恢复/最小化窗口等时看到的任何内存都不是视频内存,而是“常规”内存。实际上,您可能会在极低端的系统中看到用于视频内存的主系统内存,但更可能的是,在窗口最小化的情况下,WPF 不需要保持尽可能多的最新内容,因此会释放一些对象。

因此,我不明白你的意思是什么,“如果 Windows 操作系统能很好地管理这个内存”——虚拟化在某些方面可能很擅长,但当然有很多缺点,尤其是 WPF,这就是你为什么不这样做的原因。不要到处使用它。

于 2011-10-19T17:24:09.630 回答