在不同的 AppDomain 中执行代码以扩展应用程序内存
本文关键字:代码 扩展 应用程序 内存 执行 AppDomain | 更新日期: 2023-09-27 18:36:25
我的问题是我使用的是 32 位应用程序,所以我的内存使用量有限。我需要并行执行一段需要大量内存的代码(使用一些数据库),我想在不同的进程中运行这段代码(如果我没记错的话,每个进程都会获得大约 2 GB 的内存使用量)另一个优点是进程的任何崩溃都不会影响应用程序。我想知道Appdomain是否真的不与主应用程序共享内存?如果是这样,此解决方案将对我有所帮助?使用 C# 在单独的应用程序域中执行代码
应用程序域确实使用主应用程序内存,但是一旦卸载应用程序域,所有内存都会被回收,但是创建和卸载应用程序域会产生性能成本,如果应用程序域包含大量静态对象,它实际上可能会膨胀进程的大小,因为静态对象绑定到应用程序域而不是进程。请参阅了解应用程序域。
如果应用程序的内存密集型部分运行的时间有限,则可以从此方法中受益,但是在单独的进程中运行将允许您使用更多内存,尤其是在这是 x64 进程的情况下,但您可能需要以某种方式在两个进程之间进行通信。
您还可以考虑通过池化和重用消耗大量内存的对象来减少应用程序的内存压力。
请参阅应用域、程序集、进程和线程之间的区别
据我所知,AppDomain 通常不会在单独的进程中运行;我认为这对你没有帮助。
为什么不直接生成一个新进程?