32位 单元测试 (mstest) 内存不足 的解决方法


最近 CI服务器上老是发邮件通知说有几个单元测试没过; 把测试报告(TRX 文件) 下载下来一看 原来有好几个测试随机性的 显示 内存不足 out-of-memory exception 被抛出.

failed-unit-tests-because-of-out-of-memory-laa 32位 单元测试 (mstest) 内存不足 的解决方法 小技巧 技术 折腾 程序员

failed-unit-tests-because-of-out-of-memory-laa

CI 服务器上( 安装有 Jenkins) 有8GB内存 64位操作系统. JENKINS的JAVA进程也才吃了400M内存不到 照理说是不应该会出现内存不足的现象. 后来才发现 32位的程序 没有开启Large Address Aware(大内存) 所以最多也就只能用 1G多. 解决方法就是把下面的程序给用 editbin 开启大内存.

1
editbin /LARGEADDRESSAWARE "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\QTAgent32.exe"
editbin /LARGEADDRESSAWARE "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\QTAgent32.exe"

因为 mstest.exe (或者是 msbuild.exe /test) 会在 X86 下调用 QTAgent32.exe 如果是64位则会调用 QTAgent.exe. 也建议对 msbuild 进行 大内存开启.

1
editbin /LARGEADDRESSAWARE "C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe"
editbin /LARGEADDRESSAWARE "C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe"

32位程序平时只能使用不到 1.5 GB 的内存, 开启大内存只是在 EXE 的PE文件头 一个标志位设成开启状态 这样是告诉操作系统 程序愿意也可以使用4GB的内存(如果可以的话).

英文: https://helloacm.com/mstest-out-of-memory-laa-for-32-bit-test-agent/

GD Star Rating
loading...
本文一共 254 个汉字, 你数一下对不对.
32位 单元测试 (mstest) 内存不足 的解决方法. (AMP 移动加速版本)
上一篇: 多IP设置SSL 的 SNI问题
下一篇: 同一台服务器上多个WORDPRESS站点的一些设置可以移出去

扫描二维码,分享本文到微信朋友圈
beaa35974ebe7baee3bc3684ba7e20a4 32位 单元测试 (mstest) 内存不足 的解决方法 小技巧 技术 折腾 程序员

评论