C# 在不同的AppDomain中执行代码以扩展应用程序内存

C# 在不同的AppDomain中执行代码以扩展应用程序内存,c#,process,appdomain,C#,Process,Appdomain,我的问题是我使用的是32位应用程序,所以内存使用有限。 我需要并行执行一段需要大量内存的代码(使用一些数据库),我想在不同的进程中运行这段代码(如果我没有弄错的话,每个进程的内存使用量大约为2GB)。另一个优点是进程上的任何崩溃都不会影响应用程序。 我想知道Appdomain是否真的不与主应用程序共享内存? 如果是这样,这个解决方案会对我有帮助吗? 请参见 据我所知,AppDomain通常不会在单独的进程中运行;我认为这对你没有帮助 为什么不直接生成一个新进程?请参阅 据我所知,AppDomai

我的问题是我使用的是32位应用程序,所以内存使用有限。 我需要并行执行一段需要大量内存的代码(使用一些数据库),我想在不同的进程中运行这段代码(如果我没有弄错的话,每个进程的内存使用量大约为2GB)。另一个优点是进程上的任何崩溃都不会影响应用程序。 我想知道Appdomain是否真的不与主应用程序共享内存? 如果是这样,这个解决方案会对我有帮助吗?

请参见

据我所知,AppDomain通常不会在单独的进程中运行;我认为这对你没有帮助

为什么不直接生成一个新进程?

请参阅

据我所知,AppDomain通常不会在单独的进程中运行;我认为这对你没有帮助


为什么不直接生成一个新进程?

应用程序域确实使用主应用程序内存,但是一旦卸载应用程序域,所有内存都会被回收,但是,创建和卸载应用程序域会带来性能成本,如果应用程序域包含大量静态对象,则实际上会增大进程的大小,因为静态对象绑定到应用程序域而不是进程。看

如果应用程序的内存密集型部分在有限的时间内运行,您可以从这种方法中获益,但是在单独的进程中运行将允许您使用更多的内存,特别是如果这是一个x64进程,但您可能需要在这两个进程之间进行通信


您还可以考虑通过共享和重用消耗大量内存的对象来降低应用程序的内存压力。

应用程序域确实使用主应用程序内存,但一旦卸载应用程序域,所有内存都会被回收,但是,创建和卸载应用程序域会带来性能成本,如果应用程序域包含大量静态对象,则实际上会增大进程的大小,因为静态对象绑定到应用程序域而不是进程。看

如果应用程序的内存密集型部分在有限的时间内运行,您可以从这种方法中获益,但是在单独的进程中运行将允许您使用更多的内存,特别是如果这是一个x64进程,但您可能需要在这两个进程之间进行通信

您还可以考虑通过共享和重用消耗大量内存的对象来降低应用程序的内存压力