タグ

2011年4月23日のブックマーク (2件)

  • FirefoxのGCまわり - 射撃しつつ前転 改

    なんとなくちょっとだけ読んでみた。Firefoxにおいて、JSが使うメモリはコンパートメント、チャンク、アリーナの順に分解される。コンパートメントがどうも一番大きな区切りらしく、通常はこの単位でGCが呼ばれる。コンパートメントはホスト単位で確保されるらしい。チャンクは特に特徴のない塊で、アリーナは型毎に作られる。 GCはFull GCとコンパートメントGCがあり、後者ではコンパートメント単位でGCが行われる。TriggerGCが呼ばれるとFull GCが実行され、TriggerCompartmentGCが呼ばれるとCompartment GCが実行される。TriggerGCを呼んでいるところはgrepした限りではAllocateArenaとTriggerCompartmentGCの2つだけで、AllocateArenaはPickChunkに失敗したときにだけ呼ぶ。TriggerCompar

    FirefoxのGCまわり - 射撃しつつ前転 改
  • 即時関数(function(){ ... })()の別の書き方いろいろ - 泥のように

    JavaScriptでよく使われるコード片に即時関数というものがあります。無名関数を宣言して即実行することで、ブロックスコープの存在しないJavaScriptにおいて擬似的にブロックスコープを再現します。 var a = "global"; (function(){ var a = "local"; alert(a); //local })(); alert(a); //global 一番有名なのはこの(function(){ ... })()の形式なのですが、なぜfunctionの外側にカッコが必要なのか不思議に思ったことはないでしょうか? ためしにfunction(){ ... }()と書いてみると、Syntax Errorが発生します。 なぜfunction(){ ... }()はSyntax Errorなのか JavaScriptにはfunction文とfunction式があって、

    即時関数(function(){ ... })()の別の書き方いろいろ - 泥のように