問題タブ [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 投票する
8 に答える
8640 参照

java - 永久世代に何があるかを知るにはどうすればよいですか

ヒープダンプまたは実行中のVMがある場合、永続世代のコンテンツが何であるかを確認するにはどうすればよいですか?'jmap -permstat'については知っていますが、Windowsでは使用できません。

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

.net - .NETCF でのメモリ リーク - 動的コントロールを作成していますか?

.NET CF アプリケーションでメモリ リークの問題があります。

RPMを使用して、動的に作成するコントロールが期待どおりにガベージ コレクションされないことを確認しました。.NET ウィンドウ フォームで同じコードを実行すると、動作が異なり、期待どおりにコントロールが破棄されます。

プロセス ヒープカウンターの PerfMon 経由の RPM からの出力を参照してください。
代替テキスト

GC ヒープ:
代替テキスト

私の推測では、パネルへの弱い参照は、なんらかの不明な理由でオブジェクトを GC の対象にできないのではないでしょうか?

注: Dispose()はサンプルの問題を解決しますが、オブジェクトが使用されなくなった時期を明確に判断できないため、既存のアプリケーションに簡単に組み込むことはできません。

問題を説明するために、ソースの簡略版を含めました。

更新:
1. GC.Collect() を呼び出しても、パネルがクリーンアップされません。
2. Windows CE 4.2 デバイスで .NET CF 2.0 SP1 を使用します。

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

cocoa - Cocoa 分散オブジェクト、GC クライアント、非 GC サーバー

2 つの Cocoa プロセスがあり、分散オブジェクト (DO) と通信するセットアップがあります。クライアントはガベージ コレクションを使用していますが、サーバーは使用していません。

クライアントは、私の直接参照の外側にある遠く​​のオブジェクトにしがみついているようです。これは、オブジェクトへの参照がなくなった後でも、オブジェクトは NSDistantObjectTableEntry によって所有されていることを意味します。明らかに、それらはサーバー上で割り当て解除されません。

クライアントが終了したときにのみ、離れたすべてのオブジェクトを手放します。接続を手動で切断することもおそらくうまくいくでしょうが、クライアントの実行中にはそうしたくありません。

ローカルで参照されなくなった遠いオブジェクトを手放すように GC された DO クライアントに指示する方法はありますか?

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

flash - MovieClip が Dictionary から削除されない

ムービークリップのデータを保持するディクショナリがあり、ムービークリップの使用をやめた場合にデータをガベージ コレクションしたいと考えています。弱いキー パラメータを使用しています。他のデータとは完全に連携しますが、問題が発生しました。

このコードはうまく機能します:

しかし、実際にムービークリップを使用すると、動作しなくなります:

なぜこれが起こるのですか?それは私が間違っていることですか?回避策はありますか?

編集:この特定の例では、を使用できることはわかっていますdelete dic[mc]が、もちろんこれは単純化されたケースです。一般に、ムービークリップをディクショナリから手動で削除する必要はありませんが、アプリケーションの残りの部分でムービークリップを参照しなくなった場合は自動的に削除する必要があります。

Edit2:アーロンが言ったことをテストしてみましたが、奇妙なことを思いつきました...辞書を(何もせずに)反復するだけで動作が変わります:

これは、何も印刷されない指定された行をコメントアウトしない限り、[object Movieclip] をすべてのフレームで印刷し続けます。

0 投票する
14 に答える
62827 参照

java - Java の非常に大きなヒープ サイズ

Java で 12 GB 以上の非常に大きなヒープを使用した経験のある人はいますか?

  • GC はプログラムを使用不能にしますか?
  • どのGCパラメータを使用していますか?
  • これには、どの JVM、Sun、または BEA が適していますか?
  • このような条件下で、Linux と Windows のどちらのプラットフォームのパフォーマンスが優れているでしょうか?
  • Windows の場合、64 ビット Vista と XP では、このような高いメモリ負荷の下でパフォーマンスに違いはありますか?
0 投票する
2 に答える
3283 参照

apache-flex - removeChild() が呼び出されたときの Flex のガベージ コレクション - 競合状態の管理

Flex には、モジュール クラスのインスタンスである子の「セクション」をロードして破棄する「フレームワーク」があります。これらには多くの Web サービスとアニメーションが含まれており、公開サイトの一部です。

画面からセクションを削除する前に、インスタンスで「hideSection()」インターフェイス メソッドを呼び出します。このメソッドでは、コントロールをフェードアウトするか、セクションが閉じられないようにする場合は false を返します。現在、実行中の Timer インスタンスも停止します。

問題は、セクション オブジェクトがステージから削除されても、未解決の処理が残っている可能性があることです。たとえば、effectEnded が何かをトリガーする場所でエフェクトを実行している場合や、低速の Web サービス リクエストがタイムアウトしてエラーがポップアップする場合があります。

ガベージ コレクターの動作方法により、そのオブジェクト object がすぐに殺されることもあれば、後で殺されることもあります。セクションが閉じられると、悪いことが起こるのを最小限に抑えようとしています。

次の可能な解決策を思いつきました。より良いものがあるかどうか疑問に思いました。

  • true に設定された _disposed プロパティがあります。(セクションが閉じられた後)望ましくない動作をする可能性のあるイベントハンドラー内では、if (_disposed) { return; }.
  • .NET のように、'IDisposable' インターフェイスを実装する必要がある場合もあります。

これが本当に私の唯一の選択肢ですか?それとも、ガベージ コレクションを早めることができますか? エフェクトがまだ実行されている場合でも、ガベージ コレクションが発生する可能性はありますか?

また、特にタイマーを _null に設定する必要があるかどうかについても興味があります。または、参照が残っていない場合、タイマーを停止してガベージコレクションするだけで十分ですか。

0 投票する
10 に答える
5385 参照

algorithm - 確定的なガベージ コレクション アルゴリズムにはどのようなものがありますか?

決定論的とは、航空宇宙飛行ソフトウェアのような重要なリアルタイム ソフトウェアで使用できることを漠然と意味しています。ガベージ コレクター (および動的メモリ割り当て) は、非決定論的と見なされるため、飛行中のソフトウェアでは絶対にダメです。ただし、これについては進行中の研究があることを知っているので、この問題はまだ解決されているのでしょうか。

また、使用方法を制限するガベージ コレクション アルゴリズムも質問に含めています。

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

garbage-collection - フル ガベージ コレクションで最初に若い世代を収集する必要がありますか?

世代別ガベージ コレクタを含むプログラムを作成しています。2世代しかありません。私が疑問に思っているのは、完全なコレクションを実行する場合、最初に若いオブジェクトを収集し、生存者を古い世代に昇格させてから古い世代を収集することで、(パフォーマンスに関して) 何かを得られるのでしょうか?一掃?人々が通常どのように行うかはわかりません。

実装が少し簡単だったので、今は 2 段階の方法を使用していますが、おそらく 1 段階の方法の方が効率的でしょうか?

それが重要な場合、ガベージコレクターは非コピーです。

0 投票する
6 に答える
90531 参照

java - Java並行および並列GC

この記事-XX:+UseParNewGCは、 「並行GCで並列の若い世代のGCを有効にする」を 使用することを提案しています。

私の混乱は、並列GCと並行GCの両方を有効にするために、

  • 使用-XX:+UseParNewGCまたは
  • -XX:+UseParNewGC -XX:+UseConcMarkSweepGC?の両方を使用します

PS

JVM6を使用しています。

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

garbage-collection - 完全なuserdata__gcメタメソッドはメモリをfree()する必要がありますか?

私はCで書かれたLuaモジュールに完全なuserdataを持っています__gc()。userdataにはガベージコレクターによって呼び出されるmetamethodがあります。__gc()luaインタープリターは呼び出し後にuserdataメモリを解放しますか、それともfree()内部で解放する必要があり__gc()ますか?