我正在使用一个开源的.NET应用程序,它启动和初始化需要很长时间。它正在创建数千个对象并为首次使用进行配置。我正在尝试改善这个启动时间。
是否有一种方法可以使用Windows API或类似工具来捕获应用程序内存,然后在重启计算机后快速“恢复”此状态?基本上,是否有一种方法可以访问和保存.NET应用程序的底层内存,并在以后让CLR“吸收”这个内存?
是否有一种方法可以使用Windows API或类似工具来捕获应用程序内存,然后在重启计算机后快速“恢复”此状态?基本上,是否有一种方法可以访问和保存.NET应用程序的底层内存,并在以后让CLR“吸收”这个内存?
最简单的方法是使用Windows休眠来创建“hiberfile.sys”,然后保存此文件的副本(如果可能的话)。每次Windows启动时,您都可以使用保存的“干净”版本覆盖现有的休眠文件,以备下一次启动。这确保了您可以保存/恢复应用程序状态,而无需处理内存、指针和句柄。这个方法可行吗?
一种方法是创建一个内存磁盘,但我不知道是否可以进行恢复。(虚拟内存实际上是从硬盘驱动器中读取的,允许将内存保存/恢复为一个简单的文件)
类似于this问题,但略有不同,因为我不介意在保存应用程序内存时重新插入到确切的地址。这台电脑完全掌握在我手中,为了简单起见,假设没有其他正在运行的应用程序。
C#不支持continuation,但.NET 3.0及更高版本的工作流基础结构允许工作流停止和重新启动。我想知道一个应用程序如何像一个工作流一样运行。
Raymond Chen在博客文章中反对这一点,但这里没有太多的技术数据。
YAPM,一个开源进程监视器,能够“显示/释放/更改保护/取消分配进程的虚拟内存空间中的内存区域”。这是否与我所需要的类似?