2011-02-08 12 views

答えて

10

弱い配列は弱いポインタの配列です。ウィークポインタは、ガベージコレクションされる可能性のある値の参照です。

値に通常のポインタを使用すると、審判自身がガベージコレクションされるまでガベージコレクションを防止します。弱いレファレンスでは、レフリーの前に値を集めることができます。

使用例は、複数のシンクにデータを供給するソースです。ソースがシンクへの通常のポインタを保持している場合、シンクが必要なくなったときはいつでも、ソースが存在するまでガーベジコレクションされません。ソースがシンクへの弱い参照を使用する場合、指定されたシンクはソースの前にガベージコレクションされることがあります。

もう1つの例は、弱いハッシュテーブル(弱い配列を含む)を使用するタイプのハッシュコンセプトです。すばやく、ハッシュコンセプトは、プログラム内で作成され、生きている特定の型のすべての値を記憶する方法です。適切な値コンストラクタと共に、これはその型の値の最大限の共有を保証し、その型の物理的な等価として構造的な等価性を実装することを可能にします。その場合、非弱ハッシュテーブルが使用されると、もはやプログラムによって使用されなくなった値はガベージコレクションされません。

最後に、多くの人々は、弱い参照がキャッシュを実装するのに役立つと(間違って)考える。ガベージコレクトされている場合は、値をリファイン/再計算して値を弱くしてください。メジャーガベージコレクションは、もはや参照されていない値を再要求するため、これは良いキャッシュアルゴリズムではありません。したがって、キャッシュアルゴリズムには、予測可能性や有用な特性がありません。たとえば、キャッシュのサイズ/使用可能なメモリが所定の比率を超えないなどです。

+0

非常に良い答え、ありがとう! – Yttrill

1

データ構造とMarshallモジュールと互換性のある構造的に合同の表現の間に、1組のマップ関数を使用します。

+0

私はジェームズにもダニを与えることはできませんが、私はしたいと思います。次を参照してください。 – Yttrill

+0

これはOCSスキームのシンボルテーブルですが、コンパイルする前のs式が明白です。問題は、 "save"がDypgenの一部であり、オートマトンを保存することであり、コンパイルされたスキームをオートマトンから簡単に切断できません。 – Yttrill

+0

実際には、各Parserアクションに整数を代入して保存し、コンパイルする前にs式を個別に保存するだけで、それを実行できます。しかし、私は問題を抱えています。生産量を減らすたびにスキームコードを再コンパイルしないでください。 – Yttrill

関連する問題