質問

わかる方がいたら WeakReference, がんの参照型のクリア のみ メモリは低いのではなく、毎時の場合、gcに走るようなJavaの SoftReference).を探していなければならないというニーズをメモリに敏感します。

役に立ちましたか?

解決

いいえ、同等のものはありません。 WeakReference がジョブを実行しない特別な理由はありますか?

これはあなたに似た質問です:

なぜしないのですか? t .NETには、JavaのようなSoftReferenceとWeakReferenceがありますか?

他のヒント

ASP.NET Cacheクラス(システム.Web.Caching.Cache )は、あなたが望むものを達成するのに役立つでしょうか?メモリが少なくなると自動的にオブジェクトを削除します:

こちらで記事でキャッシュクラスを使用する方法を示します Windowsフォームアプリケーション。

に加え、ASP.NET キャッシュ、キャッシング用ブロックマイクロソフト社のパターンおよび実践。

http://msdn.microsoft.com/en-us/library/cc309502.aspx

ASP.NETキャッシュは、必要なメモリ依存の動作を提供しますが、すべてに一意のキーが必要という欠点があります。ただし、ASP.NETキャッシュに配置したオブジェクトへのWeakReferenceを保持できる必要があります。キャッシュがメモリを解放するために清掃する必要があるとキャッシュが判断するまで、キャッシュの強参照はGCを寄せ付けません。 WeakReferenceを使用すると、キャッシュキーでルックアップを実行せずにオブジェクトにアクセスできます。

Foo cachedData = new Foo();
WeakReference weakRef = new WeakReference( cachedData );
HttpRuntime.Cache[Guid.NewGuid().ToString()] = cachedData;

...

if ( weakRef.IsAlive )
{
    Foo strongRef = weakRef.Target as Foo;
}

次の行に沿ってWeakReferenceを拡張することにより、SoftReferenceクラスを作成できます

class SoftReference : WeakReference
{
    public SoftReference( object target ) : base( target )
    {
        HttpRuntime.Cache[Guid.NewGuid().ToString()] = target; 
    }
}

また、新しいターゲットがキャッシュに入るようにするには、ターゲットのセッターをオーバーライドする必要があります。

SoftReference かのように聞こえるかもしれないが便利な方法を実装メモリキャッシュが必要であり、Javaランタイムのインストをやや恣意的に決めていることを示しているか否かの有益なオブジェクト周囲を超えのコストを格納します。残念ながら、実行時の限界に関する情報はリアルな料金でオブジェクト(あることを踏まえ実際のコストに与える影響の応用のメモリ使用量その他の用途)は、ほとんど紹介されていないのに関する情報は利益のオブジェクトです。

場での価値あるいオブジェクトの周りを行わない場合であっても外に強い参照が存在し、キャッシュを維持すべき強い参照がなくなってしばらくすると(少なくともそうでworthwile).さらにオブジェクトのキャッシュのみの延長については、発行者以外の参照が存在する例で作インスタンスは格安で二つの論理的主体が同一のデータのインスタンスを持を促進することを比較方体)を使用する必要があります WeakReference.

ちなみに、また私のdruthers,.純支援のものを参照するか見られない他のプラットフォーム"を心かったのですが、自分以外の誰か"参考えと併せてお使いいただけますの WeakReference."を心かったのですが、自分以外の誰か"参考として使用できる強力な基準が適切に設定され WeakReference が無効の場合のみの強参照を目標とした"利益かったのですが、自分以外の誰か".ようなコンセプトと効率の向上をお使いの場合併GCる場合に弱いイベントハンドラが繰り返しを強い参照です。がない場合は、本当に興味のイベントハンドラはその対象のことも考えておく必要がある場合、ハンドラが退会.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top