我的问题是我使用32位应用程序,所以我的内存使用量有限。 我需要执行需要大量内存的代码片段(使用一些数据库)并且我想在不同的进程中运行此代码(如果我没有弄错,每个进程大约需要2 GB' s内存使用情况)另一个优点是流程上的任何崩溃都不会影响应用程序。 我想知道Appdomain是否真的不与主应用程序共享内存? 如果是这样,这个解决方案会帮助我吗? Executing Code in a Separate Application Domain Using C#
答案 0 :(得分:1)
请参阅Difference between AppDomain, Assembly, Process, and a Thread
根据我的知识,AppDomain通常不会在单独的进程中运行;我不认为这会对你有帮助。
为什么不直接生成新流程?
答案 1 :(得分:1)
App域确实使用主应用程序内存但是一旦app域被卸载,所有内存都会被回收,但是创建和卸载app域会产生性能成本,如果app域包含大量静态对象,它实际上可以膨胀作为静态对象的进程大小与应用程序域绑定,而不是与进程绑定。请参阅Understanding Application Domains。
如果应用程序的内存密集型部分运行的时间有限,您可以从这种方法中受益,但是在单独的进程中运行将允许您使用更多内存,特别是如果这是一个x64进程,但是可能需要以某种方式在两个进程之间进行通信。
您还可以通过池化和重用占用大量内存的对象来降低应用程序的内存压力。