c# - 使用反射加载程序集时的内存管理

标签 c# reflection memory-management composite

全部,

我正在创建一个使用复合模式的组件。核心组件使用 XMl 元数据来定义复合 Material (部件)。在运行时,核心组件会使用反射将零件装配加载到内存中并调用方法(例如 IPart.execute 方法)。

现在我的问题是

1) 当我处理或不处理对象时,使用反射加载的程序集占用的(动态)内存是否会被卸载。

2) 如果它没有卸载并释放内存,有什么方法可以将它从内存中删除。

这个问题的原因是,我正在构建的组件将是我的企业应用程序业务层的核心,可以大量定制。

谢谢 阿尔伯特·阿鲁尔·普拉卡什

最佳答案

我见过人们在另一个应用程序域中通过反射加载额外的库(我们可以称这些库为“插件”)。例如,请参阅这篇文章:http://adrianvintu.com/blogengine/post/Unloadable-plugins.aspx

这样你就可以免受“邪恶”插件的侵害,并且可以在这样的应用程序域中管理内存(当应用程序域卸载时,内存也会被释放)

关于c# - 使用反射加载程序集时的内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8007061/

相关文章:

sqlite - SQLAlchemy、反射、不同的后端和表/列不区分大小写

java - 运行时获取jar版本

c - 虚拟环境内存泄漏怎么办?

c# - 以编程方式创建 packages.config

c# - 为什么我的 backgroundWorker 不工作?

c# - Powershell C#异步执行

c++ - 自动释放数组?

javascript - ASPX 页面中引用的文件不会导致调用 Application_BeginRequest

java - 深度反射(reflection)比较等于

c++ - 删除指针数组会使调用者的应用程序崩溃