首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MSTest OutOfMemory异常

MSTest OutOfMemory异常
EN

Stack Overflow用户
提问于 2016-01-20 13:48:06
回答 2查看 1.7K关注 0票数 1

问题:

最近,我开始在一个包含大约650个单元测试的项目中遇到一个问题。

当我同时运行所有这些测试时,单元测试运行结束时的一些测试开始在System.OutOfMemoryException中失败。

当我再次运行失败的测试时,他们就通过了。

分析:

在运行测试时,我查看了任务管理器,以了解vstest.executionengine.x86.exe始终在增加,直到达到1330 MB的内存。然后,测试开始失败,出现内存不足异常。

当然,我确信我的一些类可能会有内存泄漏,但是我测试中的90%的类没有可能导致内存泄漏的代码。

我的许多测试类没有任何TestInitializeTestCleanup方法,因为我的类的创建是直接在TestMethod测试中完成的,而且那些被测试的类没有实现IDiposable (因为没有可能导致泄漏的代码)。

问题:

现在我不知道我可能做错了什么。但是,我想知道为什么测试对象即使在运行了测试类的所有测试之后,仍然保留在内存中呢?

有没有人经历过这种情况,或者能指出我应该/可以做些什么来解决或定位这个问题?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2016-01-21 09:48:58

从您的测试项目中引用dotMemory单元框架,并将以下代码添加到OOM发生之前最后运行的测试中(或在OOM附近的某个地方)。

代码语言:javascript
复制
dotMemoryApi.GetSnapshot();
dotMemoryApi.SaveCollectedData();

然后用dotMemory分析器打开这个快照,看看是什么浪费了内存。另外,看看大型对象堆,您可能对它的碎片有问题。

票数 3
EN

Stack Overflow用户

发布于 2019-02-12 14:12:34

我们有一个类似的问题:在我们的CI服务器上使用TFS和部署和运行功能测试任务运行测试时,测试器似乎不会在每次测试之后收集内存。我们在测试清理中添加了一个手动清理和一个手动GC收集,而不是获得内存异常--1,5GB内存使用量--我们现在保持在大约300 GC的内存使用量。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34901821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档