Chrome记忆体量测现在几乎可以维持较长的测试执行时间

时间:2018-10-04 07:24:55

标签: google-chrome memory-leaks google-chrome-devtools

为了检查我们的Web应用程序是否存在内存泄漏,我运行了一台执行以下操作的计算机:

  • 它(几乎)在Chrome中对整个应用程序运行自动的端到端测试
  • 在每个测试块之后,它将进入Web应用程序几乎没有任何反应的状态
  • 它触发gc();进行垃圾收集
  • 它将totalJSHeapSizeusedJSHeapSize保存到文件
  • 将每个测试运行的结果绘制到图形上

这样,我们可以看到内存增加了多少,这是应用程序中有问题的部分:在某些时候内存增加,在某些时候内存减少。 直到昨天,看起来像这样:

enter image description here 亮红色(上方):totalJSHeapSize,浅红色(下方):usedJSHeapSize

昨天,我将Chrome更新到了69版。现在,图表看上去大不相同了:

enter image description here 所使用的开始和结束内存量(usedJSHeapSize)几乎相同。但是,您可以清楚地看到,它在测试过程中(大约1.5小时)的变化方式是完全不同的。

我的问题是:

  • 这是现实的变化还是测量的变化?即Chrome是否更改了内存处理方式?还是只是通过totalJSHeapSizeusedJSHeapSize发出内存值的方式?
  • 关于内存泄漏,对我来说是好消息还是坏消息?像:在我有数十个内存增加点之前,现在我只有三个。这是真的?还是现在平坦的区域中的内存泄漏仍然存在并被隐藏?

对于Chrome如何更改其内存测量的任何背景信息,我也表示感谢。

一些其他信息:

  • VM在KUbuntu 18.04下运行
  • 这是使用AngularJS 1.6完成的单个网页应用程序

  • 内存测量的结果非常稳定-在更新Chrome之前和之后

编辑: 看来这是Chrome 69版的错误。至少,通过更新到Chrome 70 ,这种奇怪的行为已经消失了,一切看起来几乎都像以前一样。

1 个答案:

答案 0 :(得分:1)

我不认为您应该为此担心。发生这种情况的原因可能是Chrome内部使用了内存管理器。您没有提到第一个内存图的版本,这两个版本之间使用的内存管理器可能不同。 Chrome浏览器使用的是TCMalloc,它会从操作系统中获取大量内存并进行管理,一旦TCMalloc发生了内存不足的情况,便会再次从操作系统中请求大量内存并开始对其进行管理。因此,由于该原因,您看到的下一个图形的起伏较少(但大于前一个)。希望它能回答您的查询。

您提到的

  

内存测量的结果非常稳定-在更新Chrome之前和之后

您不必真正担心它,以前的chrome分配内存的方式以及它与新版本的区别是不同的(可能是不同的内存管理器)。