gpt4 book ai didi

c# - 使用同一个程序集多次调用 Assembly.Load(AssemblyName) 有什么缺点?

转载 作者:太空狗 更新时间:2023-10-30 00:21:18 24 4
gpt4 key购买 nike

我很想知道使用相同版本的程序集多次调用 Assembly.Load(AssemblyName) 有什么缺点。运行时是否知道在第一次调用后不要再次加载程序集?如果没有,是否有任何方法可以检测已加载的内容?

提前致谢。

最佳答案

当你使用这个重载时,它只会在内存中加载一次。您可以使用 Process Explorer 对其进行验证。查看加载的模块列表。每个程序集都使用 LoadLibrary 加载到 .NET 3.5。此外,它作为内存映射文件加载到进程中。

从 .NET 4.0 开始,程序集仅作为内存映射文件加载,不再通过 LoadLibrary 加载,除非它是预编译的 ngenned 程序集。

之所以在 .NET 4 中进行这一重大更改,是因为 MS 在 VS 2010 的开发过程中发现它们的内存消耗得相当快。有人发现每个加载的程序集在虚拟内存中占用其原始大小的两倍,因为它是通过 LoadLibrary 加载一次,第二次作为内存映射文件加载。这不容易找到,除非您使用 VMMap 查看您的过程。由于 VS 中的大量代码,这是 VS2010 的一个主要问题,现在主要是管理。

关于c# - 使用同一个程序集多次调用 Assembly.Load(AssemblyName) 有什么缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6231898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com