問題タブ [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.
ruby-on-rails - Ruby でのオブジェクト破棄の通知
カスタム Rails モデルを作成しました。このモデルは、データベース テーブルではなく、実際のサーバーによって支えられています (したがって、 から継承されませんActiveRecord::Base
)。サーバーから要求された情報を取得するために、サーバーへの SSH 接続を開きます。Rails はオブジェクトを再利用しないため、サーバーへの新しい SSH 接続と同様に、受信したリクエストに対して新しいオブジェクトが作成されます。サーバーのストレスを軽減するために、モデル オブジェクトがガベージ コレクションされる前に SSH 接続を閉じたいと考えています。ruby は、オブジェクトが破棄されることをオブジェクトに通知する通知メカニズムを提供しているのでしょうか? もしそうなら、この通知を使用して、SSH 接続をいつ閉じるかを知ることができます。そうでない場合は、オブジェクトが完成したことがわかったときに手動で行う必要があります。
これを手動で処理する必要がある場合、オブジェクトを明示的に破棄できますか? それとも私ができる最善のことですobject = nil
か?
c# - asp.net アプリケーションで使用するためにクラス ライブラリにキャッシュを正しく実装する
asp.net アプリケーションで使用しているクラス ライブラリにキャッシュを実装しています。
キャッシュを更新するための静的メソッドを使用して、シングルトン パターンとしてキャッシュ オブジェクトを作成しました。これは、キャッシュする必要があるデータのコレクションをメンバー変数/プロパティにロードするだけです (もちろん、いくつかのロック ロジックを取得しました)。呼び出すだけでデータにアクセスできるので、これは良い方法だと思いました
いくつかのキーで分割された大量のデータを格納するために、新しいキャッシュ オブジェクトを作成しています。私が言っているのは、新しいキャッシュを作成しているということですが、これはすべてのデータを一度にロードするのではなく、アクセスされたキーごとにコレクションを保存します。
今回はガベージコレクションについての質問が持ち上がりました。大量のデータを保存しているので、いきなりGCされたらもったいないですよね?これは単なるシングルトン パターンであるため、データがキャッシュに保持されることを保証するものは何もありません。
だから私の質問は - この状況を処理するためにキャッシュを実装するためのベストプラクティスは何ですか? 私はこれに対する非常に複雑なソリューションが本当に好きではありません.System.Webにキャッシュがあることは知っていますが、これは単なるクラスライブラリであるため、少し「ずれている」ようです.
garbage-collection - サーバーまたはワークステーション GC の設定
CLR のガベージ コレクションのサーバーまたはワークステーションのいずれかを使用するように、アプリケーションまたはマシン全体を構成するにはどうすればよいですか?
.net - ガベージコレクションのパフォーマンスを向上させる方法は?
ガベージコレクターのパフォーマンスを向上させるために、どのような最適化パターンを使用できますか?
私が尋ねる理由は、CompactFrameworkを使用して多くの組み込みソフトウェアを実行しているからです。低速のデバイスでは、ガベージコレクションが問題になる可能性があるため、ガベージコレクターが起動する回数を減らしたいのですが、発生した場合は、より早く終了するようにします。また、ガベージコレクターに対してではなく、ガベージコレクターを使用すると、.NETまたはJavaアプリケーション、特にヘビーデューティーWebアプリケーションの改善に役立つ可能性があることもわかります。
ここに私の考えのいくつかがありますが、私はベンチマークをしていません。
- 一時的なクラス/配列の再利用(割り当て数を抑えます)
- ライブオブジェクトの量を最小限に抑える(より高速なコレクション)
- クラスの代わりに構造体を使用してみてください
java - Javaのデストラクタはありますか?
Javaのデストラクタはありますか? これに関するドキュメントを見つけることができないようです。そうでない場合、どうすれば同じ効果を得ることができますか?
質問をより具体的にするために、データを処理するアプリケーションを作成しています。仕様では、アプリケーションを起動したばかりの元の状態に戻す「リセット」ボタンが必要であると書かれています。ただし、アプリケーションを閉じるかリセット ボタンを押さない限り、すべてのデータは「ライブ」である必要があります。
普段は C/C++ プログラマーなので、これを実装するのは簡単だと思いました。(したがって、最後に実装する予定でした。)リセットボタンが押されたときにすべての「ライブ」オブジェクトを破棄できるように、すべての「リセット可能な」オブジェクトが同じクラスになるようにプログラムを構成しました。
データを逆参照してガベージ コレクターがデータを収集するのを待つだけだとしたら、ユーザーが繰り返しデータを入力してリセット ボタンを押すと、メモリ リークが発生しないのではないかと考えていました。また、Java は言語として非常に成熟しているため、これが起こらないようにするか、適切に対処する方法があるはずだと考えていました。
.net - ループとガベージ コレクション
私は Web アプリケーションに取り組んでおり、次の状況に遭遇しました。
ループ内で a=Nothing を実行する必要がありますか? それともガベージ コレクターが a をクリーンアップしますか?
.net - 最小化すると、.NET アプリケーションのメモリ使用量が減少するように見えるのはなぜですか?
たとえば、Paint.NET を起動します。次に、タスク マネージャーでメモリ使用量を確認します。私のコンピューターでは、36Mb を使用しています。
次に、Paint.NET を最小化します。これで、1Mb を少し超えるだけで済みます。
これは、すべての .NET アプリケーションで発生します。.NET アプリケーションを最小化するとどうなりますか? GC は発生していますか?
java - Java での循環参照
複雑で循環的な方法で相互に参照するクラス インスタンスの集合体を考えると、ガベージ コレクターがこれらのオブジェクトを解放できない可能性はありますか?
これは過去に JVM の問題だったことを漠然と思い出しますが、これは何年も前に解決されたと思っていました。それでも、jhat を調査したところ、現在直面しているメモリ リークの原因が循環参照であることが明らかになりました。
注: 私は常に、JVM が循環参照を解決し、そのような「ゴミの島」をメモリから解放できるという印象を受けてきました。ただし、誰かが例外を見つけたかどうかを確認するために、この質問を投げかけています。
c# - C# で確定的なファイナライズをどのように管理しますか?
非常に特定の時点でフラッシュする必要がある重要なリソースを持つ C# オブジェクトがあり、ガベージ コレクターがそれに近づくたびに処理するために残すのは悪い候補です。これをどのように処理すればよいですか? 必要に応じてこのオブジェクトのインスタンスを手動で強制終了できる C++ の削除演算子のようなものはありますか?
apache-flex - AS3でガベージコレクションを強制しますか?
ActionScript 3.0 でフル ガベージ コレクションの実行をプログラムで強制することはできますか?
eventListeners を使用して一連の Display オブジェクトを作成し、一部の DO が削除され、一部の eventListeners がトリガーされて削除されたなどとしましょう...ガベージ コレクションを強制的に実行してすべてを収集する方法はありますか?収集可能ですか?