使进程内存转储并稍后在.NET中还原

使进程内存转储并稍后在.NET中还原,.net,performance,memory-management,clr,unsafe,.net,Performance,Memory Management,Clr,Unsafe,我正在寻找一种增加.NET应用程序启动时间的方法 想法是在启动初始化之后立即进行进程内存转储,并将其存储在磁盘上。 在第二次运行时,最好将进程内存替换为该转储并加速应用程序启动 所以,我的问题是: 有没有办法转储.NET进程内存 有没有办法从该转储恢复进程内存状态 解决方案(如果存在)是否适用于IIS托管的ASP.NET应用程序 谢谢。原始内存转储实际上不是这样工作的;很多事情都会被处理到单个进程之外的事情,如果你试图重放它,事情会爆发得非常严重。你需要做的是看看是什么导致启动缓慢。例如,如果问

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

想法是在启动初始化之后立即进行进程内存转储,并将其存储在磁盘上。 在第二次运行时,最好将进程内存替换为该转储并加速应用程序启动

所以,我的问题是:

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

  • 谢谢。

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

    在IIS的情况下:考虑一组服务器。如果服务器当时不在集群中,那么它需要多长时间启动并不重要

    但是:先衡量,然后行动。

    (可能是看上一篇关于开发机器的文章中最后一位作者的评论时不在主题范围内…)

    为了加快ASP.Net启动速度,在深入研究内存管理的噩梦之前,您是否已经考虑过以下解决方案:

    为了了解.Net内存转储的外观,您可以在这里找到答案:
    (你会发现它相当大!)

    不确定。NET是可管理的,内存几乎是无人地带,这一事实让我思考——这不太可能。我们在生产上有一个集群,但在开发人员的机器或测试服务器上,它需要整个生命周期才能启动。启动过程中最慢的部分是IoC容器(Castle Windsor)初始化。容器配置未标记为可序列化。大量的类和依赖关系图使得冷启动如此缓慢…@DmitryStartsev-heh;是的,IoC需要一些配置。恐怕我没有魔杖。