Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 量角器不断耗尽内存_Javascript_Angular_Selenium_Protractor - Fatal编程技术网

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

我正在进行量角器测试,最近遇到了与内存相关的问题—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'}${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