Java ガベージ コレクター使用上のヒント: ガベージ コレクター (GC) は、最新のソフトウェア仮想マシン テクノロジの重要な部分です。その設計は、仮想マシン上で実行されるアプリケーションのパフォーマンスに重要な影響を与えます。影響は大きいです。 Java 仮想マシン (JVM) と .net フレームワークの両方がこの機能を提供します。以下では、Java 仮想マシンのガベージ コレクターの原理を簡単に紹介します。
Java のメモリ管理は、実際にはオブジェクトの割り当てと解放を含むオブジェクトの管理です。
プログラマの場合、new キーワードを使用してオブジェクトを割り当てます。オブジェクトを解放するときは、オブジェクトへのすべての参照を null に割り当てるだけです。 GC の場合、プログラマがオブジェクトを作成すると、GC はオブジェクトのアドレス、サイズ、使用状況の監視を開始します。通常、GC は有向グラフを使用して、ヒープ内のすべてのオブジェクトを記録および管理します。このようにして、どのオブジェクトが「到達可能」であり、どのオブジェクトが「到達不能」であるかが決定されます。一部のオブジェクトが「到達不能」であると GC が判断した場合、GC はこれらのメモリ空間を再利用する責任があります。
GC は通常、JVM 内の 1 つまたは複数のプロセスによって実装され、ユーザー プログラムと同様にヒープ領域を占有し、実行時には CPU も占有します。 GC プロセスの実行中、アプリケーションは実行を停止します。
したがって、GC実行時間が長いとJavaプログラムの停止を感じることができますが、逆にGC実行時間が短すぎるとオブジェクトの回復率が低すぎる可能性があります。これは、あるべきものがまだたくさんあることを意味します。リサイクルされたオブジェクトはリサイクルされず、依然として大量のメモリを占有します。したがって、GC を設計するときは、一時停止時間と回復速度の間でトレードオフを行う必要があります。
GC の動作原理に従って、いくつかのテクニックと方法を使用して、GC 操作をより効率的にし、アプリケーションの要件に適合させることができます。
次に、プログラミングに関するいくつかの提案を示します。
1. 最も基本的な提案は、役に立たないオブジェクトへの参照をできるだけ早く解放することです。
ほとんどのプログラマは、一時変数を使用する場合、アクティブなスコープ (スコープ) を終了した後に参照変数を自動的に null に設定します。
2. ファイナライズ機能はできるだけ使用しないでください。ファイナライズ関数は、Java プログラマにオブジェクトまたはリソースを解放する機会を提供します。ただし、GC の負荷が増加するため、リソースを回復するためのファイナライズの使用は最小限に抑えてください。
3. 頻繁に使用する画像を使用する必要がある場合は、ソフト アプリケーション タイプを使用できます。 OutOfMemory を発生させずにプログラムが呼び出せるように、画像をメモリにできるだけ保存できます。
4. 配列、ツリー、グラフ、リンク リスト、その他のデータ構造を含むコレクション データ タイプに注意してください。このようなオブジェクトの場合、一般に GC リサイクルの効率は低くなります。プログラムで許可されている場合は、未使用の参照オブジェクトをできるだけ早く null に設定します。これにより、GC の作業が高速化されます。したがって、プログラムで使用するデータ構造は、必要がない限り、できるだけ単純にする必要があります。
5. プログラムに一定の待ち時間がある場合、プログラマは System.gc() を手動で実行して GC の実行を通知できますが、Java 言語仕様では GC が実行されることは保証されていません。
JAVA プログラムにおけるガベージ コレクターの実行は自動的であり、強制することはできません。プログラマがメモリの一部が役に立たず、リサイクルする必要があると明確に判断できたとしても、それを強制することはできません。コレクターはメモリ ブロックを再利用します。
以上がJava でガベージ コレクターを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。