我们正在使用phantomjs在我们的TFS构建服务器上运行我们的qunit测试页面.我们的测试运行器版本是根据以下示例构建的
https://github.com/ariya/phantomjs/blob/master/examples/run-qunit.js
在一段时间内,测试次数从数百次增加到数次,在晴朗的日子里,幻影开始崩溃.它真的死了说上传转储,当你看到转储它0kb!
当我们在进程资源管理器上仔细研究它时,我们发现phantomjs的内存消耗不断上升,因为phantomjs运行测试并最终崩溃到833MB.
是的,Chrome和IE正在使用相同数量的内存!是的 - 是的,我们的测试正在泄漏内存:(.我们确实修复了它,内存利用率在Chrome和IE上降低了50%,我们预计phantomjs现在可以处理它.但是,不,phantomjs仍然会崩溃,进程资源管理器显示相同的内存消费.
http://phantomjs.org/api/webpage/method/close.html
根据上面的文档,phantomjs只是在关闭时释放堆分配?这可能是我们的固定测试在chrome上消耗更少内存而不是phantomjs的原因吗?最后如何解决这个问题?如何让phantomjs保持垃圾收集javascript对象以减少堆分配?
更新1 - 07/28
我们做了一个工作.我修改了我的脚本以按模块执行我的测试模块.在执行模块的所有测试之后的循环中,我调用page.close,以便为每个模块释放内存,并且永远不会继续构建死对象堆.因为它是一个解决方法而不是解决方案,因此不会关闭此问题.希望创作者有时会解决这个问题.
在我们的ASP.NET MVC3项目中,我们编写了几个自定义HTML Helper扩展方法,它基本上呈现了一些复合控件(比如文本和带有一些所需样式的标签).现在我们也想要渲染一些javascript和HTML标签,但看起来MVCHtmlString不会将javascript测试呈现为javascript!从自定义HTML帮助程序渲染动态JavaScript的任何选项或替代方法?