Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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 Chrome时间线工具不可靠?_Javascript_Google Chrome_Google Chrome Devtools - Fatal编程技术网

Javascript Chrome时间线工具不可靠?

Javascript Chrome时间线工具不可靠?,javascript,google-chrome,google-chrome-devtools,Javascript,Google Chrome,Google Chrome Devtools,所以我得到了这个我正在调试的主干应用程序 我让时间线记录,应用程序正在使用越来越多的内存,但如果我进入配置文件并拍摄堆快照,我总是得到相同的数字(6mb),就像我的应用程序没有泄漏一样 另外,当我拍摄快照时,时间线实际上回到了6mb。我不知道该如何处理这种行为。一切都很好,你的应用程序可能没有内存泄漏。你所困惑的是一个(GC) GC是一种“试图回收程序不再使用的对象所占用的垃圾或内存”的机制。在时间轴上看到内存不断增加是很正常的,但这并不一定意味着应用程序正在泄漏内存。这意味着内存中正在积累垃圾

所以我得到了这个我正在调试的主干应用程序

我让时间线记录,应用程序正在使用越来越多的内存,但如果我进入配置文件并拍摄堆快照,我总是得到相同的数字(6mb),就像我的应用程序没有泄漏一样


另外,当我拍摄快照时,时间线实际上回到了6mb。我不知道该如何处理这种行为。

一切都很好,你的应用程序可能没有内存泄漏。你所困惑的是一个(GC)

GC是一种“试图回收程序不再使用的对象所占用的垃圾或内存”的机制。在时间轴上看到内存不断增加是很正常的,但这并不一定意味着应用程序正在泄漏内存。这意味着内存中正在积累垃圾,但您的浏览器(更准确地说,是JavaScript引擎)知道垃圾,并且会在Chrome决定何时删除垃圾时将其删除(您可以了解更多)。试着点击“收集垃圾”按钮(),它会强制垃圾收集,你会注意到时间线上的即时下降

回到制作快照以及为什么最终总是得到6MB。创建堆快照时发生的第一件事是。。。垃圾收集。这是因为DevTools不想用不再使用且应该删除的内容来掩盖快照


我强烈推荐阅读。

太棒了,谢谢!我对垃圾收集器感到有点不安,它让内存大量积累(对于一个6-18mb的移动应用来说是非常多的)@CedricDugas你需要明白垃圾收集需要花费大量的时间并暂停所有JavaScript的执行。因此,Chrome面临着一项艰巨的任务,即尽可能多地运行GC,但同时也试图避免GC使应用程序无响应的情况(这就是为什么在应用程序未被使用时调用GC的原因,例如,当您更改选项卡或缩小浏览器时)。无论如何,您仍然可以通过不经常分配新内存(例如,通过重用对象)来改进您的应用程序。这将减少内存使用的增长,从而减少频繁GC调用的需要。