問題タブ [weak-references]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
878 参照

c# - WCF での弱参照を使用した単純なデータ キャッシュ

次の WCF サービスがあるとします。

データを検索する必要があるたびにデータベースにヒットしないように、弱い参照 (またはその他のアプローチ) を使用して州の郡をキャッシュする最も効率的な (または最良の) 方法は何でしょうか。

HttpRuntime (および HttpContext) にはアクセスできないことに注意してください。

0 投票する
3 に答える
7789 参照

java - ネストされた強参照を含むオブジェクトへの弱参照、およびガベージ コレクション

エンジンへの通常の (強い) 参照を持つ車への弱い参照があるとします。車またはエンジンへの他の参照は存在しません。エンジンをガベージ コレクションできますか?

0 投票する
1 に答える
2791 参照

actionscript-3 - AS3:初期化中に弱いリスナー参照が適切ではありませんか?

私が現在理解しているように、useWeakReferenceがtrueに設定されたオブジェクトにイベントリスナーが追加された場合、そのイベントリスナーはガベージコレクションの対象となり、ガベージコレクションがスイープを実行すると削除されます。

この場合、ガベージコレクターがオブジェクトの初期化中に追加されたため、オブジェクトイベントリスナーを削除するスイープをアクティブ化する場合に備えて、弱参照イベントリスナーを使用してオブジェクトを初期化することは適切ではありませんか?

この場合、オブジェクトが無効になる前にイベントリスナーを削除するタイプのdeallocate()メソッドを作成することだけが適切でしょうか?

0 投票する
5 に答える
928 参照

garbage-collection - ガベージ コレクターは、WeakReferences が保持するオブジェクトをいつ強制終了するかをどのように決定しますか?

WeakReference によってのみ保持されていると思われるオブジェクトがあります。私は SOS と SOSEX を使用してその参照所有者を追跡しましたが、どちらもこれが事実であることを確認しました (私は SOS の専門家ではないため、この点で間違っている可能性があります)。

WeakReferences の標準的な説明は、GC がスイープを行うときにそれらを無視するというものです。それにもかかわらず、私のオブジェクトは GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced) の呼び出しに耐えます。

WeakReference でのみ参照されるオブジェクトがそのコレクションを生き残ることは可能ですか? 私が強制できるさらに完全なコレクションはありますか? それとも、オブジェクトへの唯一の参照が弱いという私の信念を再検討する必要がありますか?

更新と結論

根本的な原因は、オブジェクトをロックしている参照がスタックにあったことです。なぜ SOS も SOSEX もその参照を示さなかったのかは不明です。ユーザーエラーは常に可能性があります。

根本原因を診断する過程で、私はいくつかの実験を行い、第 2 世代オブジェクトへの WeakReferences が驚くほど長い間存続できることを実証しました。ただし、WRd 第 2 世代オブジェクトはGC.Collect(GC.MaxGeneration, GCCollectionMode.Forced) では存続しません。

0 投票する
2 に答える
243 参照

.net - 複雑なオブジェクトグラフでのIDisposableアンマネージドリソースの生涯の問題?

この質問は、管理されていないリソース(COM相互運用)を処理し、リソースリークが発生しないようにすることに関するものです。私が物事を正しい方法で行っているように見えるかどうかについてのフィードバックをいただければ幸いです。

バックグラウンド:


2つのクラスがあるとしましょう。

  • COMオブジェクトのラッパーであるクラスLimitedComResource(一部のAPIを介して受信)。これらのCOMオブジェクトの数は限られているため、私のクラスはIDisposable、COMオブジェクトが不要になったときにCOMオブジェクトを解放する役割を担うインターフェイスを実装します。

  • 別のタイプのオブジェクトは、でManagedObjectいくつかの作業を実行するために一時的に作成されますLimitedComResource。彼らはそうではありませんIDisposable

上記を図にまとめると、私のクラスは次のようになります。

(これら2つのクラスのサンプルコードをすぐに提供します。)

質問:


私の一時的なManagedObjectオブジェクトは使い捨てではないので、私は明らかにそれらがどれくらいの期間存在するかを制御することはできません。しかし、その間に私はaが参照しているDisposedを持っているかもしれません。もはやそこにないにアクセスしないようにするにはどうすればよいですか?LimitedComObjectManagedObjectManagedObjectLimitedComResource

私は現在、弱参照と、LimitedResourceオブジェクトがすでに破棄されているかどうかを示すフラグを組み合わせてこれを実装しています。より良い方法はありますか?

サンプルコード(私が現在持っているもの):


LimitedComResource

ManagedObject

0 投票する
3 に答える
2117 参照

c# - 準拠するC#コンパイラは、ローカル(ただし未使用)変数がオブジェクトへの唯一の強力な参照である場合、それを最適化できますか?

これらの関連リソースも参照してください。


言い換えると:

ローカル変数によって参照されているオブジェクトは、変数がスコープ外になる前に再利用できますか(たとえば、変数が割り当てられているが、再度使用されないため)、または変数が外れるまでガベージコレクションの対象外であることが保証されていますか?範囲?

説明させてください:


objectこのコード例では、明らかに、新しい'edがガベージコレクターによって再利用される可能性を計画する必要があります。したがって、ifステートメント。

weakRef(私は、新しい'edがまだ存在するかどうかを確認することのみを目的として使用していることに注意してくださいobject。)


このコード例の前のコード例からの主な変更点は、new'edobjectがローカル変数(unusedLocalVar)によって強く参照されることです。weakRefただし、弱参照( )が作成された後は、この変数が再び使用されることはありません。


質問:準拠しているC#コンパイラーは、の最初の2行を、1つの場所でのみ、つまりコンストラクターへの引数として使用されているCase_2Case_1判断した場合の行に最適化できますか?つまり、のアサーションが失敗する可能性はありますか?unusedLocalVarWeakReferenceCase_2

0 投票する
7 に答える
16361 参照

.net - .Netでの弱い辞書の適切な実装

IDictionary内部で弱参照を使用する適切な実装はどこにありますか?

ディクショナリは値への弱参照のみを保持し、最終的にはデッド参照をクリーンアップする必要があります。

それとも私はそれを自分で書くべきですか?

0 投票する
4 に答える
10488 参照

.net - CLRでWeakListまたはWeakCollection(WeakReferenceなど)を実行する方法はありますか?

を使用すると、List<WeakReference>希望どおりに機能しません。私が欲しいのは、WeakReferencesが参照するオブジェクトがガベージコレクションされるたびに、リストから自動的に削除されることです。

ConditionalWeakTable<TKey,TValue>そのキーと値は弱く参照されて収集可能ですが、それらを列挙することはできないので、私も満足しません!

0 投票する
1 に答える
929 参照

c# - C#で弱参照を使用するGCのコストは?

別の質問で、スティーブンCは言います:

2番目の懸念は、弱参照を使用すると実行時のオーバーヘッドが発生することです。明らかなコストは、弱参照を作成してgetを呼び出すコストです。それほど明白ではないコストは、GCを実行するたびにかなりの追加作業を行う必要があることです。

では、弱い参照のGCのコストは正確にはどのくらいですか?それはどのような追加の作業を行う必要があり、それはどれほど大きな取引ですか?私はいくつかの知識に基づいた推測をすることができますが、実際の力学に興味があります。

0 投票する
4 に答える
3880 参照

c# - 弱参照と使い捨てオブジェクト

C# では、ここで説明されているように、オブジェクトへの弱い参照を作成できます。

WeakReference クラス

.net では、IDisposable インターフェイスを実装するクラスもあります。このインターフェイスの Dispose メソッドの呼び出しは、現在保持されているマネージド リソースまたはアンマネージド リソースを手動で破棄するために実行されます。例として、Bitmap オブジェクトまたはクラスがあります。

IDisposable を実装するオブジェクトを弱参照に割り当てた場合、弱参照がオブジェクトを収集すると Dispose が呼び出されますか?