我正在单元测试中加载多个托管程序集。这些程序集来自解决方案内部,而不是第三方,这并不重要。我注意到,在运行这些测试几次(通常是10次)之后,Visual Studio倾向于增加内存消耗,并且在构建时间和响应性方面减慢了总体速度。如果不运行这些特定的单元测试,则不会出现此行为。
加载的程序集用于检索嵌入类型并创建ONLY Enum类型的实例,因此该程序集中的代码不会产生问题。我尝试了一个[ReflectionOnlyLoad]
,但它自然不允许创建类型实例。
显然,除非卸载了整个应用程序域,否则无法在加载后显式卸载程序集。
我的问题是,单元测试项目在VS进程下运行,如果是这样,这些加载的程序集堆积吗?我假设单元测试上下文会在它自己之后进行清理。
"已加载的程序集用于检索嵌入类型和创建"
可能是自我修改代码问题
如果asm运行在缓存的非边界部分,它会重写,这对旁观者来说毫无逻辑原因地对执行速度产生了巨大的影响
使用asm,你必须保持动态数据和指令数据的隔离
读/写动态数据应该存储在包含代码
的内存块之外 http://www.bbcbasic.co.uk/bbcwin/manual/bbcwina.html缓存撞击是巨大的,高达10倍慢
基本上一个asm程序应该是:
分配2048 k
(动态数据)分配4096 k
(代码)对于任何类型的汇编
如果你不会做,那就学习如何做,差别就像白天和黑夜