为了检查我们的Web应用程序是否存在内存泄漏,我运行了一台执行以下操作的计算机:
gc();
进行垃圾收集totalJSHeapSize
和usedJSHeapSize
保存到文件这样,我们可以看到内存增加了多少,这是应用程序中有问题的部分:在某些时候内存增加,在某些时候内存减少。 直到昨天,看起来像这样:
亮红色(上方):totalJSHeapSize,浅红色(下方):usedJSHeapSize
昨天,我将Chrome更新到了69版。现在,图表看上去大不相同了:
所使用的开始和结束内存量(usedJSHeapSize)几乎相同。但是,您可以清楚地看到,它在测试过程中(大约1.5小时)的变化方式是完全不同的。
我的问题是:
totalJSHeapSize
和usedJSHeapSize
发出内存值的方式?对于Chrome如何更改其内存测量的任何背景信息,我也表示感谢。
一些其他信息:
这是使用AngularJS 1.6完成的单个网页应用程序
内存测量的结果非常稳定-在更新Chrome之前和之后
编辑: 看来这是Chrome 69版的错误。至少,通过更新到Chrome 70 ,这种奇怪的行为已经消失了,一切看起来几乎都像以前一样。
答案 0 :(得分:1)
我不认为您应该为此担心。发生这种情况的原因可能是Chrome内部使用了内存管理器。您没有提到第一个内存图的版本,这两个版本之间使用的内存管理器可能不同。 Chrome浏览器使用的是TCMalloc,它会从操作系统中获取大量内存并进行管理,一旦TCMalloc发生了内存不足的情况,便会再次从操作系统中请求大量内存并开始对其进行管理。因此,由于该原因,您看到的下一个图形的起伏较少(但大于前一个)。希望它能回答您的查询。
您提到的
内存测量的结果非常稳定-在更新Chrome之前和之后
您不必真正担心它,以前的chrome分配内存的方式以及它与新版本的区别是不同的(可能是不同的内存管理器)。