問題タブ [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.
c++ - ガベージ コレクションを試すにはどうすればよいですか?
ガベージ コレクションのしくみに興味があります。マーク アンド スイープ、ストップ アンド コピー、世代別 GC などの機能について調べました。これらのいくつかを実装して、それらの動作を比較して実験したいと思います。自分で実験を始める良い方法は何ですか? 理想的には、C、Java、または Python の何か (ただし、最後の 2 つはそれ自体がガベージ コレクションされるため、それらを使用するのは難しいようです...)
apache-flex - オブジェクトへの弱参照を作成する
Actionscript 3 でオブジェクトへの弱い参照を作成して、ガベージ コレクションを実行することは可能ですか。
デバッグを容易にするためにいくつかのクラスを作成しているので、オブジェクトがここでのみ参照されている場合は、オブジェクトがメモリ内にぶら下がることは望ましくありません (もちろん、オブジェクトを削除するためのコールバックでコードを埋めたくありません)。
c# - ループ内で新しい StringBuilder を作成するよりも、StringBuilder の Remove メソッドを使用する方がメモリ効率が良いですか?
C# では、メモリ効率が高いのはどちらですか: オプション #1 またはオプション #2?
java - 最近の JVM では、不可視の参照はまだ問題になっていますか?
私はJava Platform Performanceを読んでいました (悲しいことに、最初にこの質問をしたときからリンクがインターネットから消えたようです)、セクション A.3.3 が心配でした。
私は、スコープから外れた変数はもはや GC ルートとは見なされないだろうという仮定に取り組んでいましたが、この論文はそれと矛盾しているようです。
最近の JVM、特に Sun の 1.6.0_07 バージョンにはまだこの制限がありますか? もしそうなら、分析するコードがたくさんあります...
この論文は 1999 年のものであるため、質問します。特に GC の世界では、状況が変わることがあります。
論文が入手できなくなったので、懸念を言い換えたいと思います。この論文は、メソッド内で定義された変数は、コード ブロックが終了するまでではなく、メソッドが終了するまで GC ルートと見なされることを暗示していました。したがって、変数を null に設定して、参照されるオブジェクトをガベージ コレクションできるようにする必要がありました。
つまり、main() メソッド (または無限ループを含む同様のメソッド) の条件付きブロックで定義されたローカル変数は、変数がスコープから外れる直前にその変数を null にしない限り、1 回限りのメモリ リークを引き起こします。
選択した回答のコードは、問題をよく示しています。このドキュメントで参照されている JVM のバージョンでは、foo オブジェクトが try ブロックの最後でスコープ外にドロップされた場合、ガベージ コレクションを実行できません。代わりに、JVM は main() メソッドが終了するまで参照を開いたままにしますが、その参照を使用することは不可能です。
これは、変数がちょうどスコープから外れようとしている場合でも、変数参照を null にすることがガベージ コレクターの助けになるという考えの起源のようです。
garbage-collection - 並行ガベージコレクタを備えた関数型言語?
Microsoft の新しい F# プログラミング言語は、関数型プログラミング (ファーストクラスのレキシカル クロージャーとテール コール) と、マルチコアの活用を容易にする効率的な同時実行ガベージ コレクターの強力な組み合わせを提供します。
OCaml、Haskell、Erlang、および私が知っているすべての無料の Lisp と Scheme の実装には、同時 GC がありません。Scala と Clojure には並行 GC がありますが、テール コールはありません。
したがって、これらの機能を組み合わせたオープンソースのプログラミング言語はないようです。あれは正しいですか?
flash - ガベージ コレクター Flash Player
解放されたメモリを強制的にフラッシュ ガベージ コレクタにクリーンアップさせる方法はありますか? フラッシュが参照されていないメモリをクリーンアップするのに多くの時間がかかることを見てきました...
multithreading - ガベージ コレクターがスレッドの一部を停止するのを防ぐことはできますか?
Compact Framework アプリケーションで、ガベージ コレクターが少なくとも 1 つのスレッドを無条件に停止するのを防止したり、少なくともコードの一部で GC コレクションをブロックしたりすることは可能ですか?
リアルタイムの優先順位の設定に対処する必要があると思いますが、そうしないように多くのアドバイスを見つけました.
c++ - Boehm GC 使用時の C++ でのメモリ リークの原因
このコードが原因でメモリ リークが発生していますが、その理由はわかりません。
[編集] hereからのコードを問題に含めました:
AlInt は AlObj を継承し、AlObj は gc を継承します。setup() の内容をコメントアウトすると、メモリリークは発生しません。これにより、問題はマップがクリーンアップされていないことにあると思われますが、gc アロケーターを使用しているため、よくわかりません次にどこを見るか。考え?
c# - イベント ハンドラーはガベージ コレクションの発生を停止しますか?
次のコードがある場合:
pClass はガベージ コレクションされますか? それとも、イベントが発生するたびにイベントを発生させ続けますか? ガベージ コレクションを許可するには、次のことを行う必要がありますか?
.net - アンマネージ コードで使用される .NET コンポーネントのメモリ管理
new
管理されていない世界で作業する場合、ヒープにメモリを割り当てた場合 (たとえば、C++ でキーワードを使用して) は、自分でクリーンアップする必要があります。また、後でそれを使用しAddRef
て作成された COM コンポーネントを確認する必要があります。おそらく次のようなもの:CreateInstance
Release
明らかに、スマート ポインターなど (C++ で) を使用できますが、それは重要ではありません...
AddRef/Release
COM コンポーネントから取得されたオブジェクト (上記の例の m_anotherObj など)についても必要ですか?
さらにややこしいことに、この特定のコンポーネントが、実際には .NET コンポーネントであり、COM インターフェイスを介してアンマネージ コードに公開されている場合はどうなるでしょうか。ガベージ コレクターはデータを片付ける方法を知っていますか? それとも、管理されていない世界ですべて手動で行う必要がありますか?