我试图在我的MVC web应用程序中挖掘内存漏洞,我注意到我的DefaultRegistry for StructureMap有一个复制的scan...scan.TheCallingAssembly():
public DefaultRegistry()
{
Scan(
scan =>
{
scan.TheCallingAssembly();
scan.WithDefaultConventions();
scan.TheCallingAssembly();
});
}
这会引起问题吗?会不会导致记忆泄露?(请成为问题所在)。今晚我将公布校正结果,所以我最终会发现这是否解决了问题;但是可以肯定地知道,重复扫描方法是否有任何副作用。
此外,在扫描方法出现的顺序上有什么意义吗?scan.WithDefaultConventions()是否需要排在最后,还是第一位,或者是否重要?
发布于 2017-11-01 15:17:48
下面是StructureMap:https://github.com/structuremap/structuremap/blob/master/src/StructureMap/Graph/AssemblyScanner.cs#L29-L30中的相关代码。
因此,StructureMap不会在对Scan()
的任何调用中对同一个程序集进行双重扫描。如果在多个Scan()
操作中执行相同的逻辑操作,则可能会创建复制,但至少在高于这些特定常规注册的情况下,不会两次添加相同的类型。
不,不管你按照什么顺序声明程序集和注册约定。注册约定将按照定义它们的顺序执行,因此在一些情况下,您将看到依赖排序反映了这一点。
https://stackoverflow.com/questions/47045121
复制相似问题