問題タブ [garbage-collection]

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 投票する
6 に答える
654 参照

objective-c - Objective-C/Cocoa にガベージ コレクションがあるため、メモリの管理についてまだ学ぶ必要がありますか?

それで、やっと Objective-C/Cocoa の本を払いのけました。Objective-C 2.0 にはガベージ コレクションが含まれるようになりましたが、メモリ管理に関する章はどれほど重要ですか?

ガベージ コレクションはどのくらいの違いをもたらしましたか?

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

java - Javaガベージコレクタ、ヌル、メモリリークに関する質問

Javaでキューを実装していて、iniと呼ばれる最初のノードへの参照と、lastと呼ばれる最後のノードへの参照があるとします。ここで、オブジェクトをキューに挿入し始めます。ある時点で、キューをクリアする操作が必要だと判断しました。それから私はこれをします:

メモリリークが発生していますか?iniとlastの間のノードはすべてまだチェーンされており、データが残っていると思いますが、同時にガベージコレクターがあります。

別の方法は、各要素にアクセスしてから次のノードへの参照をnullにすることですが、明示的にdeleteを使用しないことを除いて、基本的にC++と同じように実行します。

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

vb.net - 封じ込めツリー?

IDipose を理解していると思いましたが、Accelerated VB.NET のベスト プラクティスのセクションを読んだだけで、「オブジェクトには iDispose を実装するオブジェクトが含まれていないため、iDispose を呼び出すコンテインメント ツリーを反復処理する必要はありません」と記載されています。

この「包含ツリー」は、プログラムが使用したことを知っており、それを破壊するものですか、それとも、オブジェクトを破壊するときに見なければならない包含クラス/コレクションがありますか?

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

linux - マルチスレッド環境でガベージ コレクションを実装するにはどうすればよいですか?

複数のスレッドまたはプロセスで構成されるプログラムでガベージ コレクションを実行するにはどうすればよいですか?

これらのスレッドとプロセスのそれぞれからスタックをスキャンするにはどうすればよいですか?

各プロセスには独自のガベージ コレクション ルーチンが必要ですか? 実際のプログラムとは別のスレッド/プロセスでガベージ コレクターを実行するのは良い考えですか?

0 投票する
13 に答える
5303 参照

memory-management - ガベージ コレクションを使用したくない場合

ガベージ コレクションは、LISP の初期の頃から存在しており、数十年経った現在、ほとんどの最新のプログラミング言語で使用されています。

これらの言語のいずれかを使用していると仮定すると、ガベージ コレクションを使用せ、代わりに何らかの方法でメモリ割り当てを手動で管理する必要がある理由は何ですか?

これをしなければならなかったことがありますか?

できれば具体例を教えてください。

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

java - Javaガベージコレクタは自己参照をどのように処理しますか?

うまくいけば、簡単な質問です。たとえば、循環リンク リストを見てみましょう。

これは循環的にリンクされたリストであるため、単一の要素が追加されると、次の変数にそれ自体への参照が含まれます。リスト内の唯一の要素を削除する場合、entry は null に設定されます。ガベージ コレクターがメモリを解放するために ListContainer.next を null に設定する必要がありますか、それともそのような自己参照を自動的に処理しますか?

0 投票する
9 に答える
156873 参照

c++ - C++ のスタック、静的、およびヒープ

検索しましたが、これら 3 つの概念がよくわかりません。いつ動的割り当て (ヒープ内) を使用する必要があり、その本当の利点は何ですか? 静的およびスタックの問題は何ですか? ヒープに変数を割り当てずにアプリケーション全体を作成できますか?

他の言語には「ガベージ コレクター」が組み込まれているので、メモリを気にする必要はないと聞きました。ガベージコレクターは何をしますか?

このガベージ コレクターを使用してできなかった、メモリを自分で操作することで何ができますか?

誰かがこの宣言で私に言ったことがあります:

「ポインターへのポインター」があります。どういう意味ですか?次のものとは異なります。

?

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

java - エラー ダイアログが破棄されない

私は、特に日付の列を表示するために JTable を使用しているプロジェクトに取り組んでいます。日付のユーザー入力の検証が必要だったので、フォーマット検証用のマスキングと実際の日付検証用の解析の組み合わせを実装しました。日付列のカスタム CellEditor を使用してこれを行いました。

MaskedCellEditor 内に、JFormattedTextField があります。日付のマスキングをセットアップします。次に、実際の検証を可能にするために InputVerifier を追加します。私の InputVerifier は、チェックするために verify() を実装しています: 1. textField.isEditValid() 2. DateValidator.ValidDate(). いずれかが無効な場合、verify は false を返し、InputVerifier はフォーカスをテキスト フィールド (セル エディター) に固定し、ユーザーに日付形式を知らせる小さなメッセージ ダイアログを表示します。

エラー メッセージは、編集中のセルの下にポップアップ表示される、小さな装飾のない、非モーダルでフォーカス不可能な JDialog です。キーを押すか、日付の検証に成功すると消えます。小さなエッジケースを除いて、うまく機能しています。

無効な編集によってダイアログがポップアップしているときに、ユーザーがアプリケーションの上部にあるメニュー ボタンを選択すると、画面が切り替わり、現在画面に表示されているすべてのもの (テーブルを含む) が破棄されます。ただし、ダイアログが表示されていて、キーの押下/編集の成功が発生していないため、ダイアログが非表示になることはありません。別の画面では、まったく関係のないコンテキストで表示されたままになります。ユーザーがテーブルで画面をオフにすると、ユーザーがダイアログを取り除く方法はありません。

ダイアログ自体に Timer および/または MouseListener をスローして、ダイアログ自体を非表示にすることについて議論しましたが、実際の問題を無視していると感じています。ダイアログがまだ表示されるように設定されており、ガベージコレクターがそれを取り除くのを妨げているため、ダイアログが破棄されることはありません。

JTable を保持しているパネルに Cleanup メソッドがありますが、それを取り除くためにダイアログ (InputVerifier のコンポーネント) を参照する良い方法が見つかりません。ダイアログは、テーブルの親パネルからかなり離れています。(パネル -> JTable -> CellEditor -> JFormattedTextField -> InputVerifier -> JDialog)

テーブルが破棄されたときにダイアログを強制的に非表示にする方法についてのアイデアはありますか? 詳細が必要な場合は、お知らせください。皆さんが詳細に行き詰まらないようにしていますが、多くのことが進行中です。

0 投票する
9 に答える
1325 参照

c# - Dispose() を明示的に呼び出すことができないステートメントの途中で作成された IDisposable オブジェクトはどうなりますか?

たとえば、Sharepoint を使用していて (これは他のオブジェクト モデルにも当てはまります)、ステートメントの途中で、IDisposable SPWeb オブジェクトを作成するメソッド (この場合は "OpenWeb()") を呼び出します。ここで、SPWeb オブジェクトへの参照がないため、SPWeb オブジェクトで Dispose() を呼び出すことができません。 では、このメモリ リークについて心配する必要はありますか?

ステートメントを複数の行に分割して、Dispose を呼び出すための SPWeb 参照を取得できることはわかっています。

私の質問は美学に関するものではなく、参照がないため、明示的に Dispose() を呼び出すことができない IDisposable オブジェクトに何が起こるかについての質問であることに注意してください。

最初に質問した時、言葉足らずで申し訳ありませんでした。それ以来、私はそれを言い換えました。これまでのすべての応答に感謝します。

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

.net - ValueType ラッパーのガベージ コレクション

ValueType クラスの MSDN リンクからの引用

値型がオブジェクトのように振る舞う必要がある場合、値型を参照オブジェクトのように見せるラッパーがヒープに割り当てられ、値型の値がそこにコピーされます。ラッパーがマークされているため、値の型が含まれていることがシステムに認識されます。

これは、「integerVariable.ToString();」のようにコーディングした場合を意味します。作成されたラッパー オブジェクトは、このメソッドを使用できるようにし、同様に System.Object の他のすべてのメソッドを使用できるようにします。

この理解は正しいでしょうか?

これらのオブジェクトは「通常の」オブジェクトとどう違うのですか?

そのようなオブジェクトのガベージ コレクションは異なりますか? はいの場合、どのように?

前もって感謝します。