<bdo id='lyeqx'></bdo><ul id='lyeqx'></ul>
  • <tfoot id='lyeqx'></tfoot>

    <legend id='lyeqx'><style id='lyeqx'><dir id='lyeqx'><q id='lyeqx'></q></dir></style></legend>
    <i id='lyeqx'><tr id='lyeqx'><dt id='lyeqx'><q id='lyeqx'><span id='lyeqx'><b id='lyeqx'><form id='lyeqx'><ins id='lyeqx'></ins><ul id='lyeqx'></ul><sub id='lyeqx'></sub></form><legend id='lyeqx'></legend><bdo id='lyeqx'><pre id='lyeqx'><center id='lyeqx'></center></pre></bdo></b><th id='lyeqx'></th></span></q></dt></tr></i><div id='lyeqx'><tfoot id='lyeqx'></tfoot><dl id='lyeqx'><fieldset id='lyeqx'></fieldset></dl></div>
  • <small id='lyeqx'></small><noframes id='lyeqx'>

        如何检测在 JavaScript 中触发垃圾收集的内存分配

        时间:2023-10-12

              <i id='q8jpF'><tr id='q8jpF'><dt id='q8jpF'><q id='q8jpF'><span id='q8jpF'><b id='q8jpF'><form id='q8jpF'><ins id='q8jpF'></ins><ul id='q8jpF'></ul><sub id='q8jpF'></sub></form><legend id='q8jpF'></legend><bdo id='q8jpF'><pre id='q8jpF'><center id='q8jpF'></center></pre></bdo></b><th id='q8jpF'></th></span></q></dt></tr></i><div id='q8jpF'><tfoot id='q8jpF'></tfoot><dl id='q8jpF'><fieldset id='q8jpF'></fieldset></dl></div>
              <legend id='q8jpF'><style id='q8jpF'><dir id='q8jpF'><q id='q8jpF'></q></dir></style></legend>
                • <bdo id='q8jpF'></bdo><ul id='q8jpF'></ul>

                  <small id='q8jpF'></small><noframes id='q8jpF'>

                  <tfoot id='q8jpF'></tfoot>

                    <tbody id='q8jpF'></tbody>
                  本文介绍了如何检测在 JavaScript 中触发垃圾收集的内存分配?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  在寻找 JavaScript 库(铆钉)中的性能问题时,我发现垃圾收集在一次运行中发生了 3 到 4 次,占用了大约 15% 的执行时间(使用 Chrome DevTools JS Profile).

                  While looking for performance issues in a JavaScript library (rivets), i found that garbage collection occurs three to four times in a run, taking ~15% of execution time (using Chrome DevTools JS Profile).

                  由于垃圾回收的原因,至少有 30 个地方创建了临时函数/对象作为潜在候选对象.

                  There are at least 30 places where temporary functions / objects are created being potential candidates for the reason of the garbage collection.

                  我想知道是否有办法找到负责分配被垃圾回收的内存的函数,这样我就可以专注于我的性能调整.

                  I'd like to know if there's a way to find what functions are responsible for the allocation of the memory being garbage collected, so i can focus my performance tuning.

                  我记录了堆分配时间线,但它没有区分被垃圾收集的内存并且仍然持有引用(没有像 DevTools 中指出的灰色条 doc)

                  I recorded Heap Allocation TimeLine but it does not differentiate memory that was garbage collected and that still holds a reference (there's no gray bar as pointed in DevTools doc)

                  还没有运气记录堆分配配置文件.

                  Also recorded Heap Allocation Profile without luck.

                  推荐答案

                  DevToolsProfiles 选项卡中选择 Record Heap Allocation.包装 javascript 应在对 setTimeout() 的调用中进行评估,持续时间设置为足够的时间,以便在函数传递给 之前单击 Start>setTimeout 被调用;例如

                  At Profiles tab at DevTools select Record Heap Allocation. Wrap javascript which should be evaluated within a call to setTimeout() with a duration set to enough time to click Start before function passed to setTimeout is called; for example

                  <!DOCTYPE html>
                  <html>
                  <head>
                    <script>
                      t = 5;
                      setTimeout(function() {
                        (function test1() {
                          var a = 123;
                          function abc() {
                            return a
                          }
                          abc();
                        }());
                      }, 10000)
                    </script>
                  </head>
                  <body></body>
                  </html>
                  

                  setTimeout 被称为蓝条时,可能会在时间轴上出现一个灰条.单击 Ctr+E 停止记录堆配置文件.

                  When setTimeout is called a blue bar, possibly followed by a gray bar should appear at timeline. Click Ctr+E to stop recording heap profile.

                  在时间线图中选择蓝色或灰色条.在默认选项为 Summary 的下拉菜单中选择 Containment.选择

                  Select blue or gray bar at timeline graph. Select Containment at dropdown menu where default option is Summary. Select

                  [1] :: (GC roots) @n
                  

                  其中 n 是一个数字.

                  通过单击[1] :: (GC 根) 左侧的三角形来展开选择.选择[1] :: (GC root)的一个元素,查看显示的DistanceShallow SizeRetained Size 用于选择的列.

                  Expand the selection by clicking triangle to left of [1] :: (GC roots). Select an element of [1] :: (GC roots), review the displayed Distance, Shallow Size, and Retained Size columns for the selection.

                  要查看特定功能,请滚动到

                  To check specific functions, scroll to

                  [2] :: (External strings) @n
                  

                  到应该列出全局变量和函数调用的位置;例如,"t""setTimeout" 来自 javascrip.检查相应的 DistanceShallow SizeRetained Size 列以进行选择.

                  to where global variables and function calls should be listed; i.e.g., "t" and "setTimeout" from above javascrip. Check corresponding Distance, Shallow Size, and Retained Size columns for the selection.

                  这篇关于如何检测在 JavaScript 中触发垃圾收集的内存分配?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:Javascript中同一变量上的“new"没有“delete&qu 下一篇:如何获取 javascript 对象引用或引用计数?

                  相关文章

                  最新文章

                  <tfoot id='32dgY'></tfoot>

                    <bdo id='32dgY'></bdo><ul id='32dgY'></ul>

                • <legend id='32dgY'><style id='32dgY'><dir id='32dgY'><q id='32dgY'></q></dir></style></legend>
                  1. <small id='32dgY'></small><noframes id='32dgY'>

                    <i id='32dgY'><tr id='32dgY'><dt id='32dgY'><q id='32dgY'><span id='32dgY'><b id='32dgY'><form id='32dgY'><ins id='32dgY'></ins><ul id='32dgY'></ul><sub id='32dgY'></sub></form><legend id='32dgY'></legend><bdo id='32dgY'><pre id='32dgY'><center id='32dgY'></center></pre></bdo></b><th id='32dgY'></th></span></q></dt></tr></i><div id='32dgY'><tfoot id='32dgY'></tfoot><dl id='32dgY'><fieldset id='32dgY'></fieldset></dl></div>