みなさんこんにちは。私はテクノロジーの共有が大好きなプログラマーの Xiaomi です。今日は、Java ヒープメモリの分割とリサイクルのアルゴリズムについてお話したいと思います。 ヒープメモリとは
ヒープメモリ空間を分割する方法Java ヒープ メモリは、経過時間やサイズなどの要素に基づいて分割できます。 Java ヒープ メモリは、年齢に基づいて、若い世代と古い世代の 2 つの部分に分けられます。 新しい世代は、Eden エリア、Survivor エリア From、Survivor エリア To の 3 つの部分に分けられます。このうち、Eden 領域は新しく生成されたオブジェクトを格納するために使用され、Survivor 領域 From と Survivor 領域 To は Eden 領域で生き残ったオブジェクトを格納するために使用されます。 デフォルトでは、新世代と旧世代の比率は 1:2 です。つまり、新世代は Java ヒープ メモリ全体の 1/3 を占め、旧世代は 2/3 を占めます。新世代では、Eden 領域と Survivor 領域の比率は 8:1:1 です。つまり、Eden 領域が新世代全体の 80% を占め、Survivor 領域 From と Survivor 領域 To がそれぞれ新世代全体の 10% を占めます。 これら 2 つの比率は、新世代と旧世代のメモリ使用量を考慮して設定されます。新しい世代の割合が小さすぎると、ガベージコレクションが頻繁に発生する可能性があり、古い世代の割合が大きすぎると、メモリの無駄が発生する可能性があります。 -Xmn コマンドを設定することで新しい世代のサイズを調整でき、-XX:NewRatio コマンドを使用して新しい世代と古い世代の比率を調整できます。 永久世代が削除されたのはなぜですか?JDK1.8 より前では、Java 仮想マシンは永続的な世代を使用して、一部の静的データとクラス情報を保存していました。しかし、永続世代のメモリ使用量とガベージ コレクションの効率は理想的ではないため、永続世代は JDK1.8 で削除され、Metaspace に置き換えられました。 メタスペースは、クラス構造情報、フィールド、メソッド情報などを含むクラス メタデータが格納される Java 仮想マシン内の領域です。メタスペースのサイズは動的に調整でき、さらに多くのクラス メタデータを保存する必要がある場合は、メタスペースを自動的に拡張できます。 永続世代と比較して、メタスペースのメモリ使用量とガベージコレクションの効率が大幅に向上しました。同時に、メタスペースは永久世代のサイズによって制限されなくなったため、さまざまなアプリケーション シナリオに適応しやすくなります。 メタスペースのサイズを設定するコマンドは -XX:MaxMetaspaceSize です。 マークスイープJava ヒープ メモリ内のオブジェクト インスタンスは動的に割り当てられ、再利用されます。 Java 仮想マシンは、さまざまなメモリ管理要件を満たすために、さまざまなメモリ再利用アルゴリズムを提供します。 マークスイープアルゴリズムは、最も基本的なメモリリサイクルアルゴリズムです。主なプロセスは次のとおりです。
このアルゴリズムの欠点は、メモリの断片化を引き起こし、メモリの使用率が低下することです。 コピーアルゴリズムレプリケーション アルゴリズムはメモリを 2 つの部分に分割し、一度に 1 つの部分のみを使用します。このメモリ部分が使い果たされると、その中のアクティブなオブジェクトは別の部分にコピーされ、その後このメモリ部分はクリアされます。 コピー アルゴリズムの利点は、メモリの断片化を回避できることです。欠点は、追加のメモリ領域を消費することです。 レプリケーション アルゴリズムは、主に新世代のメモリ回復に使用されます。 マークコンパクトマークスイープ アルゴリズムはメモリを 2 つの部分に分割します。1 つの部分にはアクティブなオブジェクトが格納され、もう 1 つの部分には未使用のメモリ領域が確保されます。メモリ領域が不足している場合は、まずアクティブなオブジェクトがマークされ、次にアクティブなオブジェクトが未使用のメモリ領域に分類され、最後に未使用のメモリ領域がクリアされます。 マークスイープ アルゴリズムはメモリの断片化を回避できますが、メモリ内でオブジェクトを移動する必要があるため、効率が低いという欠点があります。 マークスイープアルゴリズムは、主に古い世代のメモリ回復に使用されます。 世代リサイクルアルゴリズム世代別リサイクル アルゴリズムは、オブジェクトのライフ サイクルに応じてメモリを異なる世代に分割し、各世代で異なるメモリ リサイクル アルゴリズムを使用します。 新しい世代では、レプリケーション アルゴリズムが一般的に使用されます。新しい世代のほとんどのオブジェクトのライフサイクルは非常に短いため、このアルゴリズムはより効率的です。マークスイープアルゴリズムは、古い世代では一般的に使用されます。古い世代に保存されているオブジェクトのライフサイクルは長いため、このアルゴリズムによりガベージコレクションの回数を効果的に減らし、Java アプリケーションのパフォーマンスを向上させることができます。 G1アルゴリズムG1 アルゴリズムは、サーバー側アプリケーション用のガベージ コレクション アルゴリズムです。ヒープ メモリを同じサイズの複数の領域に分割します。各領域は新しい世代または古い世代のいずれかになります。 G1 アルゴリズムは、アプリケーションのメモリ使用量に基づいて各領域のサイズを動的に調整します。 G1 アルゴリズムでは、ガベージ コレクターは新しい世代と古い世代の区分に従ってガベージ コレクションを実行するのではなく、ヒープ領域全体をまとめて考慮します。 G1 アルゴリズムは、世代リサイクル アルゴリズムに似た考え方を使用して、ヒープ スペースを複数の領域に分割します。各領域のリサイクル戦略は異なるため、より柔軟なメモリのリサイクルが可能になります。 G1 アルゴリズムの利点は、ガベージ コレクションの効率を確保しながら、メモリの断片化の問題を回避できることです。同時に、G1 アルゴリズムは各領域のサイズを動的に調整できるため、さまざまなアプリケーション シナリオに適応しやすくなります。 要約すると、Java 仮想マシンはさまざまなメモリ回復アルゴリズムを提供しており、それぞれに独自の利点、欠点、適用可能なシナリオがあります。実際のアプリケーションでは、メモリ リソースの使用を最大化し、アプリケーションのパフォーマンスを向上させるために、特定のアプリケーション シナリオに基づいて適切なガベージ コレクション アルゴリズムを選択する必要があります。 要約するこの記事では、Java 仮想マシンのヒープ メモリのパーティションとリサイクル アルゴリズムについて詳しく説明します。ヒープ メモリは、オブジェクトを格納するために使用される Java 仮想マシン内のメモリ領域です。 Java プログラム内のすべての新しいオブジェクトはヒープ メモリに格納されます。メモリ リソースをより効率的に利用するために、Java 仮想マシンはヒープ メモリを新しい世代と古い世代に分割し、異なるメモリ領域に対して異なるガベージ コレクション アルゴリズムを使用します。 新世代のガベージ コレクション アルゴリズムには、主に Serial、ParNew、G1 アルゴリズムが含まれます。シリアル アルゴリズムは最も基本的なガベージ コレクション アルゴリズムであり、ガベージ コレクションに単一のスレッドを使用します。 ParNew アルゴリズムは、Serial アルゴリズムのマルチスレッド バージョンです。ハードウェア リソースをより有効に活用し、マルチコア CPU でのガベージ コレクションの効率を向上させることができます。 G1 アルゴリズムは、さまざまなアプリケーション シナリオに適応できるサーバー側アプリケーション用のガベージ コレクション アルゴリズムです。 旧世代のガベージ コレクション アルゴリズムには、主に CMS アルゴリズムと G1 アルゴリズムが含まれます。 CMS アルゴリズムは、マークスイープ アルゴリズムに基づいたガベージ コレクション アルゴリズムです。ガベージコレクションにマルチスレッドを使用しますが、断片化の問題があります。 G1 アルゴリズムは、メモリの断片化の問題を回避できる、より柔軟なガベージ コレクション アルゴリズムです。 実際のアプリケーションでは、特定のアプリケーション シナリオに基づいて適切なガベージ コレクション アルゴリズムを選択する必要があります。同時に、ガベージ コレクションはアプリケーションのパフォーマンスに影響を与えることにも注意する必要があります。ガベージ コレクションが過度に頻繁に実行されると、アプリケーションのパフォーマンスが低下する可能性があります。したがって、Java アプリケーションを設計および開発する際には、アプリケーションのパフォーマンスと安定性を向上させるために、実際の状況に応じてメモリ空間のサイズとガベージ コレクション アルゴリズムの選択を合理的に設定する必要があります。 |
<<: サードパーティのウェアハウスで Zadig パイプラインの自動トリガーを実現する方法
2008 年に設立され、英国に登録されている openitc (サブブランド XenVZ もあります...
Hostsolutions の社長が戻ってきました (体調不良だそうです)。プロモーション用に 50...
月収10万元の起業の夢を実現するミニプログラム起業支援プランWeChatインターネットはトラフィック...
私たちは、エッジ コンピューティングというコンピューティングの新しい時代にいます。これまでのあらゆる...
インドネシアで正式に登録された会社である regolithmedia は、2009 年に設立され、7...
「 7年前に私がF5に入社することを決めたときを振り返ると、顧客やパートナーはそれを無謀な決断だと思...
IDC Review Network (idcps.com) は 4 月 29 日に次のように報告し...
Kubernetes サービス プロキシとキャリアグレードの Aspen Mesh は、サービス プ...
人気アーティストになるための道が再編されつつある。番組から登場した新人に加え、ショート動画の有名人も...
レノボグループ自体は、研究、生産、供給、販売、サービスの全バリューチェーンにおいて多くの実践を行って...
最近、Baiduの計算ルールは大きく変更され、多くのSEO担当者を不安にさせていると言えます。しかし...
フィリピンの会社である Alchosting LLC は 2009 年に設立され、主に VPS、仮想...
中国の大手証券会社である中泰証券株式会社(以下、中泰証券)は5月23日、自社構築のシステムをアリババ...
10月25日、ある商人が易邦電力網に明らかにしたところによると、タオバオは昨日から改訂された新ホーム...
若さとファッション性が自動車ブランドの戦略的焦点と市場刺激ポイントになりつつあります。若者向けにどう...