問題タブ [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.
android - Android:GCはSoftReferencesを尊重しませんか?
DalvikのガベージコレクターはSoftReferencesを尊重せず、WeakReferencesと同様に、できるだけ早くそれらを削除します。まだ100%確信はありませんが、まだ最大3MBの空きメモリがあるにもかかわらず、LogCatに「GCがbla-bla-blaバイトを解放しました」と表示された後、SoftReferencesがクリアされます。
また、ここでマーク・マーフィーのコメントを見ました:
少なくとも1.5の時間枠では、Androidでは機能しないことを除いて。GCSoftReferenceのバグが修正されたかどうかはわかりません。SoftReferencesは、このバグですぐにGCされます。
それは本当ですか?SoftReferencesは尊重されていませんか?
これを回避する方法は?
java - WeakHashMap が存在するのに、WeakSet が存在しないのはなぜですか?
J.ブロックより
... メモリ リークの原因はリスナーです ... コールバックが即座にガベージ コレクションされるようにする最善の方法は、それらへの弱い参照のみを保存することです。たとえば、それらを WeakHashMapにキーとしてのみ保存します。
では、なぜ Java Collections フレームワークに WeakSet がないのでしょうか?
java - GC中のweakref処理時間を短縮するにはどうすればよいですか?
現在、私のアプリケーションが散発的に長いGC時間を示しているという問題に直面していますが、これらはすべて弱い参照処理が原因でのみ発生します。したがって、スレッド停止時間は常に弱いref処理時間に近くなります。他のすべてのGCサイクルは、0.0001秒から0.200秒です。
gc.logから(再フォーマット):
現在、これらの設定を行っています。より簡単な設定を試しましたが、変更はありません。
NewSizeを上げると、通常のGCサイクルが長くなります。マシンには8つのコアがあり、アプリケーション用にそれほど多くのCPUを消費しません。古い世代のGCを早期に同時に実行しようとしました。
そして、はい、これはサードパーティのライブラリの一部であるため、弱いrefの使用法を取り除くことはできません。
ruby - RubyでのWeakRefのコストはいくらですか?
大きなデータセットを処理するWeakRefを使用することのオーバーヘッドは何ですか?
私が実行したいタスクは次のようなものです。
get_array_of_weak_refs
それは時間がかからず、O(1)
複雑であると仮定します。そのため、唯一の懸念はhuge
配列のメモリサイズです。
の計算にかかる時間についても、現時点では気にしませんresult
。
が通常の配列である場合huge
、もちろんメモリに収まらない可能性があります。
しかし、WeakRef がその配列の要素として使用される場合、それは役に立ちますか? そのため、要素を反復処理した後、x
ガベージ コレクションを実行してメモリを解放できます。
このシナリオのオーバーヘッドはどれくらいですか? 代替案はありますか?
android - アクティビティ間でデータを渡すための WeakReferences の HashMap
公式の Android FAQからの次の提案に特に興味があります。
オブジェクトへの WeakReferences の HashMap
長いキーを持つオブジェクトへの WeakReferences の HashMap を使用することもできます。アクティビティがオブジェクトを別のアクティビティに渡したい場合、オブジェクトをマップに配置し、インテント エクストラを介して受信側アクティビティにキー (カウンターまたはタイム スタンプに基づく一意の Long) を送信するだけです。受信者アクティビティは、このキーを使用してオブジェクトを取得します。
これを適切に実装する方法が見つかりませんでした。ここで WeakReferences が好まれる理由と、ハード参照を使用しない理由がわかりません。
私の実装(クラス XYのインスタンスをアクティビティ Aからサービス Bに送信したい):
受信サービスには、オブジェクトの静的 HashMap があります。
/li>送信部分のコード (アクティビティ A)
/li>受信側のコード (サービス B)
/li>
コードはハード参照を使用しています。ここで弱参照を使用する必要があるのはなぜですか (FAQ で提案されているように)。そして、データを渡すためのそのような使用パターンは大丈夫ですか、それとも他のものを好みますか。
scala - WeakReference と Scala REPL
scala.ref.WeakReferenceで遊んでみたいと思います。しかし、大きなことを実装しようとする前に、scala コンソールで動作を確認してみたいと思います。いくつか試してみましたが、逆参照するオブジェクトを取得できませんでした。これが私の試みの1つです:
以下の oxbow_lakes によって別の試行が行われます。
java.lang.System.gc
また、無駄にガベージ コレクターを明示的に実行しようとしました (呼び出し)。
のコンテンツを逆参照する方法はありますres1
か?
matlab - クラスオブジェクトを処理するためのMATLAB弱参照
MATLABでのハンドルクラスベースのORMの可能性について考えているときに、インスタンスのキャッシュの問題が発生しました。弱い参照や弱いマップを作成する方法をすぐに考えることはできませんでしたが、イベントリスナーで何かが考案される可能性があると思います。何か案は?
より詳しい情報
MATLABでは、(値クラスではなく)ハンドルクラスに参照セマンティクスがあります。MATLABに含まれている例は、containers.Map
クラスです。1つをインスタンス化して関数に渡すと、関数がオブジェクトに加えた変更はすべて、元の参照を介して表示されます。つまり、JavaまたはPythonオブジェクト参照のように機能します。
JavaやPythonと同様に、MATLABは、ハンドルクラスの各オブジェクトを参照しているものの数を何らかの方法で追跡します。これ以上存在しない場合、MATLABはオブジェクトを安全に削除できることを認識しています。
弱参照とは、オブジェクトを参照するものですが、ガベージコレクションの目的での参照としてはカウントされません。したがって、オブジェクトへの残りの参照のみが弱い場合、それは破棄される可能性があります。通常、イベントまたはコールバックは弱参照に提供できます。オブジェクトが破棄されると、そのオブジェクトへの弱参照が通知され、クリーンアップコードを実行できるようになります。
たとえば、弱値マップは、値(キーではなく)が弱参照として実装されることを除いて、法線マップに似ています。弱いマップクラスは、これらの弱い参照のそれぞれにコールバックまたはイベントを配置できるため、参照されるオブジェクトが削除されると、マップ内のキー/値エントリが削除され、マップが適切に整理されます。
perl - Perl で、弱参照をコピーすると通常の強参照が作成されるのはなぜですか?
Scalar::Util::weaken言います:
注: 弱い参照をコピーすると、通常の強い参照が作成されます。
なぜ Perl がこのように処理するのか理解できません。私のアプリケーションでは、
weaken
サイクルを中断するために使用します。Perl がこのように動作しなければ、すでに弱いリファレンスを弱めなければならないことがあります。
c# - .NET3.5で特定のインスタンスに対して保持されている参照の数を確認します
.NET 3.5で特定のインスタンスに対して保持されている参照の数を確認することはできますか?
data-structures - 純粋に機能的にはweakhashmapと同等ですか?
Java の弱いハッシュ マップのような弱いハッシュ テーブルは、弱い参照を使用して、ガベージ コレクターによって到達不能なキーのコレクションを追跡し、コレクションからそのキーとのバインディングを削除します。ウィーク ハッシュ テーブルは通常、グラフ内の 1 つの頂点またはエッジから別の頂点またはエッジへの間接化を実装するために使用されます。
このデータ構造に純粋に機能的に相当するものはありますか? そうでない場合、どのように作成できますか?
これは興味深い挑戦のようです。到達不能な部分を削除するためにデータ構造を収集 (つまり、変更) する必要があるため、内部実装は純粋ではありませんが、データの一部にしか影響しないため、不純物を観察することができなかったユーザーに純粋なインターフェイスを提供できると思います。定義上、ユーザーが到達できない構造。