問題タブ [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.
java - Google コレクションで弱いマルチマップを作成する
MultiMaps 用の優れた MapMaker に相当するものはありますか? 現在、私は次のようにキャッシュを作成します:
MultiMap の要点は、ネストされたリスト値を避けることです。弱いキーでマルチマップを構築する方法はありますか?
java - 弱参照はどのように実装されていますか?
.NET や Java などで、弱参照が内部でどのように機能するのだろうか。私の2つの一般的なアイデアは次のとおりです。
- 「侵入的」 - 最上位クラス (オブジェクト クラス) への弱い参照のリストを追加します。次に、オブジェクトが破棄されると、すべての弱い参照を反復して null に設定できます。
- 「非侵入的」 - 弱い参照のリストへのオブジェクトのポインターのハッシュテーブルを維持するため。オブジェクト B への弱い参照 A が作成されると、変更または作成されたハッシュテーブル内のエントリが存在し、そのキーは B へのポインタになります。
- 「ダーティ」 - オブジェクトが破棄されるとゼロになる、各オブジェクトに特別なハッシュ値を格納します。弱参照はそのハッシュ値をコピーし、それをオブジェクトの値と比較して、オブジェクトが生きているかどうかを確認します。ただし、これを直接使用するとアクセス違反エラーが発生するため、そのハッシュ値を持つ追加のオブジェクトが必要になると思います。
これらのソリューションはどちらもクリーンでも効率的でもないようです。実際にどのように行われるか知っている人はいますか?
c# - WeakReference は適切なキャッシュを作成しますか?
キャッシュされたオブジェクトへの WeakReferences を使用して、メモリ不足の場合にそれらをキャッシュから自動的に削除するキャッシュがあります。私の問題は、キャッシュされたオブジェクトがキャッシュに格納された直後に収集されることです。キャッシュは 64 ビット アプリケーションで実行され、4 ギガを超えるメモリがまだ使用可能な場合でも、キャッシュされたすべてのオブジェクトが収集されます (通常、それらはその時点で G2 ヒープに格納されます)。プロセス エクスプローラーが示すように、手動で誘発されるガベージ コレクションはありません。
オブジェクトの寿命を少し延ばすためにどのような方法を適用できますか?
java - ThreadLocal リソースのリークと WeakReference
ThreadLocalについての私の限られた理解は、リソース リークの問題があるということです。この問題は、ThreadLocalでWeakReferencesを適切に使用することで解決できると思います (ただし、この点を誤解している可能性があります)。WeakReference で ThreadLocal を正しく使用するためのパターンまたは例があれば、それが必要です。たとえば、このコード スニペットでは、WeakReference はどこに導入されますか?
c# - 関数が戻るときの NullReferenceException
マルチスレッド アプリケーションを実行すると NullReferenceException が発生しますが、これはデバッガーの外部でリリース モードで実行した場合に限られます。スタック トレースはログに記録され、常に同じ関数呼び出しを指します。関数にログ ステートメントをいくつか入れて、どれだけ到達するかを判断しようとしました。関数の最後の行にあるステートメントを含め、すべてのステートメントがログに記録されます。興味深いのは、NullReferenceException が発生すると、関数呼び出しの後のステートメントがログに記録されないことです。
関数が呼び出されるたびに例外が発生するわけではありません。関数の実行前または実行中にスタックが破損して、戻りアドレスが失われ、null 参照が発生する可能性はありますか? .NET でそのようなことが可能だとは思いませんでしたが、もっと奇妙なことが起こったと思います。
関数の呼び出しを関数の内容に置き換えてみたので、すべてがインラインで発生し、次のような行で例外が発生します。
「classItemCollection」がnullではないことをログで確認しました。また、IEnumeratorが何かおかしいことをしている場合に備えて、foreachをforに変更しようとしましたが、同じ行で例外が発生しました。
これをさらに調査する方法についてのアイデアはありますか?
更新:何人かのレスポンダーが、ロガーが null でないことを確認することに関する可能な解決策を提案しています。明確にするために、ログ ステートメントは、例外が発生し始めた後にデバッグ目的で追加されました。
java - Javaのコレクションで弱参照オブジェクトを見つける
Java の WeakReference と Collections に関するいくつかの質問:
Java のさまざまなデータセット インターフェイス (コレクション、リスト、セット、キューなど) を WeakReference で透過的に実装するライブラリはありますか? WeakHashMap は HashMap インターフェイス用ですか?
または、単純に通常のコレクションを作成してから、compareTo または Comparator などで何らかのトリックを使用して、コレクションの検索を正しく機能させる一般的な解決策はありますか?
私は基本的にこれが欲しい:
しかし、インターフェイスの契約では、E への参照は弱く保存されます。get(int index)
明らかに、そのオブジェクトがなくなった場合などに nullを返すことに問題はありませんが、contains(E e)
関数やその他のアイテムが適切に機能することを望みます。
「ここで発明されていない」トラップを回避しようとしているだけであり、これを自分で実装した場合、可能な限り簡単な解決策になるようにしています。
visual-studio-2008 - コンパイル時に Visual Studio 2008 がデバッグ モードで停止する理由
何らかの理由でデバッグ モードでスタックする .NET プロジェクトがあります。ツールバーでコンパイル モードをデバッグからリリースに変更しましたが、プロジェクトがデバッグ ディレクトリに置かれてしまいます。VS が SLN ファイルなどを更新していないようです。助けてください!
私がこれについて質問している理由は、プログラムの実行時に弱い参照「ENCList」がメモリを詰まらせているようであり、.NET アプリがデバッグでコンパイルされたときに作成されたように見えるためです (または、私が持っている他のソースはそう言っています)。オンラインで見つけた)。
-マーク
c++ - C++で親への弱いポインタを維持するには?
C ++の子オブジェクトで親への弱いポインタ(共有ポインタを使用して作成される)を維持する標準的な方法はありますか?
基本的に、次の行に何かを実装する必要があります。
上記のクラス B のすべてのインスタンスは、親 (クラス A のオブジェクト) への弱いポインタを保持する必要があります。クラス A オブジェクトは、shared_ptr を使用してインスタンス化されます。null デリーターを使用するソリューションを考えることができます。しかし、それはこのようなことを行う標準的な方法ですか?
objective-c - 循環参照があります。Objective-C で弱参照を作成するにはどうすればよいですか?
私はiPhoneアプリケーションに取り組んでいます。Row
classの多数のオブジェクトを解放する必要があるclassのオブジェクトがありBlock
ます。EveryBlock
には現在、 class のインスタンス変数を保持するプロパティがありますRow
。
Everyには、これらのブロックRow
が含まれています。NSMutableArray
これが循環参照であることを理解しています。Apple のドキュメントには、循環参照を持つオブジェクトの割り当てを解除するには、強参照 (retain プロパティ) の代わりに弱参照が必要であると記載されていますが、それは実行されておらず、正確にどのように行っているかを説明していません。行内のすべてのブロックと行自体を同時に解放および解放する予定です。各ブロック内で「親」行への弱い参照を設定するにはどうすればよいですか?
.net - .NETの弱いイベント?
オブジェクトAがオブジェクトBからのイベントをリッスンする場合、オブジェクトBはオブジェクトAを存続させます。これを防ぐ弱いイベントの標準的な実装はありますか?WPFには何らかのメカニズムがあることは知っていますが、WPFに関連付けられていないものを探しています。解決策はどこかで弱参照を使用する必要があると思います。