为什么我的WPF应用程序在最小化一段时间后变得很慢
本文关键字:一段时间 最小化 我的 WPF 应用程序 为什么 | 更新日期: 2023-09-27 18:04:28
假设您有一个使用WPF开发的应用程序,当您运行该应用程序并最小化它时,过了一段时间(假设30分钟或更长时间),当您恢复该应用程序的窗口时,您发现它冻结(或缓慢)了几秒钟。
我的问题是为什么它变得很慢,有什么方法来解决它?
这不是WPF的属性,而是虚拟内存的属性。
基本上,现代操作系统试图使程序尽可能快地运行,但它们也允许许多程序同时运行,超过了它们所有的内存一次可以容纳到你那可怜的RAM中。因此,当操作系统看到正在运行的程序需要分配一个新的内存页,但RAM已经满了页时,它会将其中一个页(更喜欢有一段时间没有使用的页)踢到硬盘上,进入一个名为页文件的文件中。
当该内存页所属的程序试图访问它时,这被称为"页面错误"——操作系统检测到该页不在RAM中,而是在磁盘上,并且必须在继续执行之前将其读入RAM。这是相对较慢的,因为从硬盘读取比从RAM读取慢。如果一个程序有一段时间没有运行,可以想象它的所有页面都被调出到RAM中,因此它会很慢,直到它不再遇到页面错误。
我对如何处理这个问题没有经验,但是你可以试试这样做:
1)以异步方式编写程序-因此,当一个线程正在做触发页面错误的事情时,程序在其他线程上响应
2)故意触摸内存的每一页,以保持所有页面(仅建议当您的程序非常重要,以至于它应该一直占用RAM,即使不使用!)
3)"扔硬件"的解决方案-购买更多的内存:)