18

タイトルで言及したプロパティが私のページで大幅に上昇していることに気付きました (特に「(閉鎖)」)。

この OS やブラウザは制御されていますか? それについて何かできることはありますか?

(クロージャ)、(配列)、(コンパイルされたコード)、(システム)などとは正確には何ですか?

また、(配列)と「配列」の違いは何ですか?

4

2 に答える 2

17

あなたの質問について:

Q: (closure)(array)(compiled code)(system)などとは正確には何ですか?

Addy Osmani による記事からのこのスニペットが役立つ場合があります。

  • (グローバル プロパティ) – グローバル オブジェクト (「ウィンドウ」など) とそれによって参照されるオブジェクトの間の中間オブジェクト。オブジェクトがコンストラクタ Person を使用して作成され、グローバル オブジェクトによって保持されている場合、保持パスは [global] > (global property) > Person のようになります。これは、オブジェクトが相互に直接参照する標準とは対照的です。パフォーマンス上の理由から、中間オブジェクトがあります。グローバルは定期的に変更され、プロパティ アクセスの最適化は非グローバル オブジェクトに対して適切に機能しますが、グローバルには適用できません。

  • (ルート) – 保持ツリー ビューのルート エントリは、選択したオブジェクトへの参照を持つエンティティです。これらは、エンジンが独自の目的で作成した参照にすることもできます。エンジンにはオブジェクトを参照するキャッシュがありますが、そのような参照はすべて弱いものであり、真に強い参照がないため、オブジェクトの収集を妨げることはありません。

  • (closure) – 関数クロージャによるオブジェクトのグループへの参照の数

  • (array, string, number, regexp) – Array、String、Number、または正規表現を参照するプロパティを持つオブジェクト タイプのリスト

  • (コンパイルされたコード) – 簡単に言えば、コンパイルされたコードに関連するすべてのものです。スクリプトは関数に似ていますが、ボディに対応します。SharedFunctionInfo (SFI) は、関数とコンパイル済みコードの間にあるオブジェクトです。通常、関数にはコンテキストがありますが、SFI にはありません。

  • HTMLDivElement、HTMLAnchorElement、DocumentFragmentなど - コードによって参照される特定のタイプの要素またはドキュメント オブジェクトへの参照。

記事全文には、ヒーププロファイリングに関するその他の貴重な情報が多数含まれています。

そしてあなたの他の質問:

Q:また、(array) と 'Array' の違いは何ですか?

Addy の説明に基づいて、私の解釈は次のとおりです。(配列)は、実際の配列を参照するプロパティを持つ (任意の型の) オブジェクトの集合体です。対照的に、Arrayは実際の Array オブジェクトのリストです。

于 2013-05-17T11:39:05.897 に答える
2

クロージャは、直接のスコープ外で宣言されたデータを参照できる関数です。

以下に例を示します。

var closure = (function() {
   var a = "some data";
   var b = "something else...";
   return function Closure() {
      // this function retains references to a and b.
   }
})();

Web 開発でクロージャが発生する最も一般的な方法は、イベント リスナーを dom ノードにアタッチすることです。

元:

$.ready(function() {
   var $elems = $("selector");
   var tools = new Tools();
   $elems.mousedown(function() { // <-- this has created a closure
      // We can refer to $elems and tools in here
      // and so as long as this function is held on to so are those variables to which
      // it has access
   });
});

これを確認すると、実際に (閉鎖) カウントが増加することがわかります。

  1. ポップオープンクローム
  2. ヒープダンプを取る
  3. 走る: function DistinctName() {} function DistinctName2() {}

    JavaScript コンソールで

  4. 別のヒープダンプを取る

  5. 一番下のヒープダンプオプションから「比較」を選択します。

それが表示され、カテゴリの下に新しい閉鎖として表示さDistinctNameれます。DistinctName2(closure)

v8には「JIT」コンパイラがあるため、(コンパイルされた)JITコンパイル済みソースを参照していると思います。

(配列) と (システム) しか推測できません。

于 2012-05-20T23:51:14.890 に答える