滚动查看器作为视频内存管理的主人

时间:2011-10-19 12:23:21

标签: wpf memory-management scrollviewer ui-virtualization video-memory

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

我的问题是这个

  1. 这就是我们所说的视频内存吗?
  2. 我们在WinForms应用程序中也观察到同样的事情吗?我问这个是因为我看到MSWord在最小化时没有做那样的事情。
  3. 此外,如果Windows操作系统管理这么好的内存,那么为什么我们不虚拟化所有内容,而不是制作虚拟化堆栈面板,为什么我们不能让滚动查看器成为UI虚拟化的主人?
  4. 我希望我能得到一些有趣的答案。

1 个答案:

答案 0 :(得分:1)

视频内存完全不同。它由图形卡用于存储纹理,屏幕图像,着色器程序输入/输出等。

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

WinForms应用程序不会 - 它们只使用GDI进行渲染,因此除非在设计之外发生某些事情,否则将使用更少的视频内存。

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

因此,我不明白你的意思,'如果Windows操作系统能很好地管理这个内存' - 虚拟化在某些方面可能很擅长,但当然有很多缺点,特别是对于WPF,这就是为什么你不会在任何地方使用它。