0

我在单元测试中加载多个托管程序集。程序集来自解决方案而不是第三方,这并不重要。我注意到 Visual Studio 在运行这些测试几次(通常是 10 次)后往往会增加内存消耗,并且在构建时间和响应能力方面总体上会减慢。如果未运行这些特定的单元测试,则不会出现此行为。

加载的程序集用于检索嵌入类型并创建 ONLY Enum 类型的实例,因此该程序集中的代码不会造成麻烦。我尝试了一个[ReflectionOnlyLoad],但这自然不允许创建类型实例。

显然,除非卸载整个应用程序域,否则一旦加载,就无法显式卸载程序集。

我的问题是,单元测试项目是否在 VS 进程下运行,如果是,这些加载的程序集会堆积起来吗?我会假设单元测试上下文会自行清理。

4

1 回答 1

1

“加载的程序集用于检索嵌入式类型并创建实例”

可能是自我修改代码问题

如果 asm 在它重写的缓存的无界部分中运行,并且对于旁观者来说没有逻辑原因,这会对执行速度产生巨大影响

使用 asm,您必须将动态数据和指令数据分开锁定

读/写动态数据应存储在包含代码的内存块之外

http://www.bbcbasic.co.uk/bbcwin/manual/bbcwina.html#cache

打击很大,最多慢 10 倍

基本上一个 asm 程序应该是:

分配 2048k

【动态数据】

分配 4096k

[代码]

适用于任何组装方式

如果你做不到,那就学习如何,区别就像白天和黑夜

于 2013-05-19T09:46:12.403 回答