【发布时间】:2011-11-04 09:20:01
【问题描述】:
全部,
我正在创建一个使用复合模式的组件。核心组件使用 XML 元数据来定义组合(部件)。在运行时,核心组件会使用反射将部件组件加载到内存中并调用方法(例如 IPart.execute 方法)。
现在我的问题是
1) 使用反射加载的程序集所占用的(动态)内存将在我处置对象时被卸载。
2)如果它没有卸载并释放内存,有什么办法可以从内存中删除它。
这个问题的原因是,我正在构建的组件将是我的企业应用程序业务层的核心,可以进行大量定制。
谢谢 阿尔伯特·阿鲁尔·普拉卡什
【问题讨论】:
-
当我们使用正则表达式时,微软表示它会创建一个动态组合,并且在应用程序/appdomain 被回收之前,该程序集不会被垃圾收集/从内存中卸载。当我们使用反射加载程序集时,它是否会创建动态程序集。如果是,那么对象将始终在内存中,并且不会优化内存的使用。这是我的担忧。可以通过适当的防御性编码和 IDIspose 等来释放资源。
标签: c# reflection memory-management composite