程序员控制下的谷歌Chrome堆快照(关闭),(数组),(系统),(编译代码)?

jdw*_*jdw 16 javascript memory google-chrome-devtools

我注意到我在标题中提到的属性在我的页面中显着上升(特别是'(闭包)').

此操作系统和/或浏览器是否受控制?我可以做些什么吗?

究竟什么(闭包),(数组),(编译代码),(系统)等?

另外,(数组)和'数组'有什么区别?

Phi*_*ley 16

关于你的问题:

问:究竟是什么(闭包),(数组),(编译代码),(系统)等?

Addy Osmani撰写的文章中的这段摘录可能会有所帮助:

  • (全局属性) - 全局对象(如"窗口")与其引用的对象之间的中间对象.如果使用构造函数Person创建对象并由全局对象持有,则保留路径将类似于[global]>(global property)> Person.这与标准形成对比,在标准中,对象直接相互引用.出于性能原因,我们有中间对象.Globals会定期修改,属性访问优化可以很好地解决非全局对象不适用于全局变量.

  • (根) - 保留树视图中的根条目是引用所选对象的实体.这些也可以是引擎为其自身目的而创建的引用.引擎具有引用对象的高速缓存,但是所有这些引用都很弱并且不会阻止对象被收集,因为没有真正强大的引用.

  • (闭包) - 通过函数闭包对一组对象的引用计数

  • (array,string,number,regexp) - 具有引用Array,String,Number或正则表达式的属性的对象类型列表

  • (编译代码) - 简单地说,一切都与编译代码有关.脚本类似于函数但对应于正文.SharedFunctionInfos(SFI)是站在函数和编译代码之间的对象.函数通常具有上下文,而SFI则不具有上下文.

  • HTMLDivElement,HTMLAnchorElement,DocumentFragment等 - 引用代码引用的特定类型的元素或文档对象.

完整的文章还有许多关于堆分析的宝贵信息:http://addyosmani.com/blog/taming-the-unicorn-easing-javascript-memory-profiling-in-devtools

而你的另一个问题是:

问:另外,(数组)和'数组'有什么区别?

根据Addy的描述,我的解释如下:( array)是具有引用实际Array的属性的对象(任何类型)的聚合.相反,Array是实际Array对象的列表.

  • 菲利普,你在这里解释了 (array) 和 Array 之间的区别。我不明白你对(数组)的解释。你能不能更详细一点,因为我不像大多数开发人员那么快。任何帮助将非常感激。 (2认同)