进行进程内存转储,稍后在.NET中进行恢复

Dmi*_*sev 2 .net clr performance memory-management unsafe

我正在寻找一种方法来增加.NET应用程序的启动时间.

想法是在启动初始化后立即进行进程内存转储并将其存储在磁盘上.在第二次运行时,用转储和加速应用程序启动替换进程内存会很不错.

所以,我的问题:

  1. 有没有办法转储.NET进程内存?
  2. 有没有办法从该转储恢复进程内存状态?
  3. 解决方案(如果存在)是否适用于IIS托管的ASP.NET应用程序?

谢谢.

Mar*_*ell 5

原始内存转储实际上不是那样的; 很多事情都会处理到单个进程之外的事情,并且如果你试图重放它将会非常糟糕.您需要做的是查看导致启动缓慢的原因.例如,如果问题是加载配置和设置数据(例如,从数据库中),那么可能有某种方法可以序列化该信息,以便可以在本地从简单存储重新加载,而不会产生太多开销.您可能会看到像"ilmerge"和"ngen"这样的工具(分别减少"融合"和"jit"时间) - 但坦率地说,对于几乎所有场景来说,这些东西都有点过分.

对于IIS:考虑一组服务器.如果服务器当时不在群集中,启动时间并不重要.

但是:首先衡量,然后采取行动.