Javascript 量角器不断耗尽内存
我正在进行量角器测试,最近遇到了与内存相关的问题—javascript内存不足。我尝试通过Javascript 量角器不断耗尽内存,javascript,angular,selenium,protractor,Javascript,Angular,Selenium,Protractor,我正在进行量角器测试,最近遇到了与内存相关的问题—javascript内存不足。我尝试通过--max old space size=8096增加内存堆,但即使一个节点实例有~8GB内存,它仍然能够达到该限制并崩溃。我实现了某种内存跟踪器并将 console.log('login memory data'、`${heap}MB${'\t'}${diffHeap}MB${'\t'}'))和 console.log('logout memory data',`${heap}MB${'\t'}${dif
--max old space size=8096
增加内存堆,但即使一个节点实例有~8GB内存,它仍然能够达到该限制并崩溃。我实现了某种内存跟踪器并将
console.log('login memory data'、`${heap}MB${'\t'}${diffHeap}MB${'\t'}'))
和
console.log('logout memory data',`${heap}MB${'\t'}${diffHeap}MB${'\t'}'))
在我的登录/注销类中(在每次测试中使用);这给了我非常有趣的结果:
登录内存数据2369.92 MB | 0.00 MB
关于登录和
注销内存数据2492.42 MB | 122.50 MB
注销时
最后一个数据(从内存中取出javascript堆之前的测试)“占用”了大量内存:
注销内存数据4706.79 MB | 1608.02 MB
然后是信息:
2020-02-05T14:21:13.6777685Z [chrome #01] FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
2020-02-05T14:21:13.6777832Z [chrome #01] 1: 00007FF6981DF04A v8::internal::GCIdleTimeHandler::GCIdleTimeHandler+5114
2020-02-05T14:21:13.6777974Z [chrome #01] 2: 00007FF6981BA0C6 node::MakeCallback+4518
2020-02-05T14:21:13.6778090Z [chrome #01] 3: 00007FF6981BAA30 node_module_register+2032
2020-02-05T14:21:13.6778211Z [chrome #01] 4: 00007FF6984420EE v8::internal::FatalProcessOutOfMemory+846
2020-02-05T14:21:13.6778349Z [chrome #01] 5: 00007FF69844201F v8::internal::FatalProcessOutOfMemory+639
2020-02-05T14:21:13.6778558Z [chrome #01] 6: 00007FF698962BC4 v8::internal::Heap::MaxHeapGrowingFactor+9556
2020-02-05T14:21:13.6778688Z [chrome #01] 7: 00007FF698959C46 v8::internal::ScavengeJob::operator=+24310
2020-02-05T14:21:13.6778826Z [chrome #01] 8: 00007FF69895829C v8::internal::ScavengeJob::operator=+17740
2020-02-05T14:21:13.6778951Z [chrome #01] 9: 00007FF69895E1B7 v8::internal::Heap::CreateFillerObjectAt+1175
2020-02-05T14:21:13.6779142Z [chrome #01] 10: 00007FF6987EC5B3 v8::internal::interpreter::Interpreter::GetDispatchCountersObject+78451
2020-02-05T14:21:13.6779294Z [chrome #01] 11: 00007FF698141132 v8::internal::StackGuard::ArchiveSpacePerThread+52082
2020-02-05T14:21:13.6779428Z [chrome #01] 12: 00007FF6981417F3 v8::internal::StackGuard::ArchiveSpacePerThread+53811
2020-02-05T14:21:13.6779624Z [chrome #01] 13: 00007FF698221474 uv_dlerror+2436
2020-02-05T14:21:13.6779757Z [chrome #01] 14: 00007FF6982221D8 uv_run+232
2020-02-05T14:21:13.6779869Z [chrome #01] 15: 00007FF6981C128E node::NewContext+1390
2020-02-05T14:21:13.6779994Z [chrome #01] 16: 00007FF6981C189B node::NewIsolate+603
2020-02-05T14:21:13.6780105Z [chrome #01] 17: 00007FF6981C1D07 node::Start+839
2020-02-05T14:21:13.6780243Z [chrome #01] 18: 00007FF69807935C node::MultiIsolatePlatform::MultiIsolatePlatform+604
2020-02-05T14:21:13.6780377Z [chrome #01] 19: 00007FF698C1A93C v8::internal::compiler::OperationTyper::ToBoolean+134796
2020-02-05T14:21:13.6780506Z [chrome #01] 20: 00007FFC34C484D4 BaseThreadInitThunk+20
2020-02-05T14:21:13.6780635Z [chrome #01] 21: 00007FFC35F4E8B1 RtlUserThreadStart+33
这让我得出一个结论,在每个规范之间,内存并没有被释放。
我在两个环境中运行了这些测试,在第二个环境中测试通过了,但是量角器仍然为它们使用了大量(~2,5GB)的内存
造成如此巨大内存消耗的可能原因是什么?我可以补充一点,测试主要基于browser.wait
这是我的conf.js文件
var HtmlReporter = require('protractor-beautiful-reporter');
var SpecReporter = require('jasmine-spec-reporter').SpecReporter;
var jasmineReporters = require('jasmine-reporters');
var browserToken = '#{browser}#';
var _browserName = browserToken.replace(/\W/g, '') === 'browser' ? 'chrome' : browserToken;
exports.config = {
params: {
// config stuff
},
directConnect: true,
onPrepare: function() {
browser.params.url = `${browser.params.protocol}://${browser.params.address}`;
jasmine.getEnv().addReporter(new HtmlReporter({
// config stuff
}).getJasmine2Reporter());
jasmine.getEnv().addReporter(new SpecReporter({
spec: {
displayStacktrace: true
}
}));
return browser.getProcessedConfig().then(function(config) {
var browserName = config.capabilities.browserName;
var junitReporter = new jasmineReporters.JUnitXmlReporter({{
`${generatedSuiteName}.${browser.params.environmentName}.${browserName}`;
}
});
jasmine.getEnv().addReporter(junitReporter);
});
},
onComplete: function(){
browser.driver.close().then(function(){
browser.driver.quit();
});
},
multiCapabilities: [
{
'browserName': _browserName,
chromeOptions: {
args: ["--window-size=3840,2160", "--ignore-certificate-errors", "--ignore-ssl-errors", "--headless"]
},
specs: [
],
},
{
'browserName': _browserName,
chromeOptions: {
args: ["--window-size=3840,2160", "--ignore-certificate-errors", "--ignore-ssl-errors", "--headless", "--disable-gpu", "--no-sandbox" ]
},
specs: [
],
},
{
'browserName': _browserName,
chromeOptions: {
args: ["--window-size=3840,2160", "--ignore-certificate-errors", "--ignore-ssl-errors", "--headless"]
},
specs: [
],
},
],
}
};```
你在Windows机器上吗?@ SergeyPleshakov是正确的-精确的测试是通过微软Team Foundation Server远程运行的,但是你在其中运行的远程机器是Linux还是Windows?无论如何,试试这个@ SergeyPleshakov I包含我的配置文件以获得更多关于这个问题的信息。尝试了
--no sandbox
标志,但没有多大帮助。尝试将多个可分性分割成每个单个CONF文件,并将它们作为Team Foundation Server中的单独的“任务”运行,但这也给出了与以前相同的内存错误。有什么想法吗?远程计算机是ofc Windows