フルGCとマイナーGCの違いが分からない

フルGCとマイナーGCの違いが分からない

[[317199]]

この記事では、主に JVM のさまざまな GC を紹介し、誰もがこれらの概念を明確に理解できるようにします。

マイナー GC、ヤング GC、フル GC、古い GC、メジャー GC、混合 GC など、多くの GC 用語を見たことがあるかもしれません。

概念が多すぎて、考えるのは頭が痛くなります。これらすべての GC は何を指しているのでしょうか?

まず、Zhihu での R の回答を引用します。

HotSpot VM の実装に関しては、実際には GC の正確な分類が 2 つあります。

部分GC: GCヒープ全体を収集しないモード

  • Young GC: Young Gen のみを収集する GC。Young GC はマイナー GC とも呼ばれます。
  • 古い GC: 古い世代のみを収集する GC。このモードでは、ガベージ コレクター CMS の同時コレクションのみが実行されます。
  • 混合 GC: Young Gen 全体と Old Gen の一部を収集する GC。このモードを持つのはガベージ コレクター G1 のみです。

フルGC: 新しい世代、古い世代、永久世代(JDK 1.8以降では、永久世代は削除され、メタスペースに置き換えられます)、およびその他のすべての部分を含むヒープ全体を収集します。

次に、各 GC を見てみましょう。

(1)マイナーGC / ヤングGC

まずはマイナーGC/ヤングGCについて見てみましょう。ご存知のとおり、新世代(Young Gen)は若い世代とも呼ばれます。これら 2 つの用語は同義です。そして、若い世代の Eden メモリ領域がいっぱいになった後、実際には若い世代の GC、または新しい世代の GC をトリガーする必要があります。

現時点では、新世代の GC は、実際にはマイナー GC またはヤング GC と呼ばれています。これら 2 つの用語は誰もが理解できると思います。簡単に言えば、これは新世代の GC 専用です。

(2)旧GC

いわゆる旧世代の GC は、文字通りの意味からこれがいわゆる旧世代の GC であると理解できるため、Old GC と呼ぶ方が適切です。

しかし、ここでは旧世代の GC をフル GC と呼んでいますが、これは実際に可能です。それは文字通りの言い方を少し変えただけです。

旧世代の GC の意味をより正確に表現するために、旧世代の GC を Old GC と呼ぶことができます。

(3)フルGC

実は、Full GC にはもっと適切な用語があり、Full GC は新世代、旧世代、永久世代のメモリ空間全体のガベージ コレクションを指すため、Full GC と呼ばれています。

Fullはその名の通り全体を意味するため、JVM全体でガベージコレクションを実行し、各メモリ領域のガベージを収集することになります。

(4)メジャーGC

また、「メジャー GC」という用語もありますが、これは実際にはほとんど使用されず、非常に混同しやすい概念でもあります。

メジャー GC は旧世代の GC だと考えてオールド GC と同一視する人もいれば、メジャー GC は JVM のメモリ領域全体に対する GC だと考えてフル GC と同一視する人もいます。

したがって、この混同されやすい概念については、今後はあまり言及しないことをお勧めします。誰かがメジャー GC の概念について話しているのを聞いたら、その人が古い GC について言及しているのか、それともフル GC について言及しているのかを明確に尋ねることができます。

(5)混合GC

混合 GC は G1 の独自の概念です。実際、簡単に言うと、G1 では、古い世代がヒープ メモリの 45% を占有すると (-XX:InitiatingHeapOccupancyPercent: マーキング サイクルをトリガーするための Java ヒープ占有率しきい値を設定します。デフォルト値は 45% です。ここでの Java ヒープ パーセンテージは、old + humongous を含む non_young_capacity_bytes を指します)、Mixed GC がトリガーされ、若い世代と古い世代の両方がリサイクルされることを意味します。混合 GC は G1 にのみ表示されます。

参照する

https://tech.meituan.com/2016/09/23/g1.html

https://www.zhihu.com/question/41922036/answer/93079526

「Java 仮想マシンの徹底理解: JVM の高度な機能とベスト プラクティス (第 3 版)」

<<:  クラウド ネットワーキングとクラウド コンピューティングの違いは何ですか?

>>:  IDCクラウドコンピューティングレポート:アリババクラウドは世界トップ3にランクイン、成長率はアマゾンとマイクロソフトを上回る

推薦する

クラウドサービスの選択に必読: 12 社以上の IaaS プロバイダーの長所と短所を比較

AWS、Microsoft Azure、Google、IBM は長い間パブリック クラウド IaaS...

ベテランプログラマーによる長年のまとめ: Kafka の高スループットの理由を解明

Kafka のスループットは一般的なメッセージキューよりも高く、最速であることはよく知られています。...

ウェブサイトは降格されました。ウェブサイトの日記を保存

まず、スナップショットが 26 日にロールバックされました。他のすべてが正常だったので、あまり気にし...

Kubernetes 1.20が利用可能になりました

2020 年の 3 番目で最後のリリースとなる Kubernetes 1.20 を発表できることを嬉...

コンテンツマーケティング記事を書くためのヒント

一定のライティングスキルを持つことは、インターネット マーケターの基本的なスキルであると言えるでしょ...

メタバースは人々を騙してきましたが、Web 3.0 は再び人々を騙すのでしょうか?

春節祝典のスケッチ「返済しないで」では、アレンとチャン・ユアンが演じる昔の同級生がラオシェンに借金を...

中順益はNetEase Cloudの専用クラウドを使用して、シナリオベースの金融テクノロジーサービスを積極的に推進しています。

最近、インターネット金融会社が大量に株式を公開し、市場全体が少し熱くなっています。こうした状況を受け...

オーストラリア VPS: $46/年/KVM/4GB RAM/30GB NVMe/1Gbps 帯域幅

オーストラリアの VPS 業者である flowvps [Alpha Layer Pty Ltd (A...

ストレージ、ボリューム: zxhost-$7/kvm/2g メモリ/800g ハードディスク/500m 無制限トラフィック

一般的に、無制限のトラフィックを備えたストレージ型 VPS はほとんどありません。ここでは、ZXHO...

cloudpowerall ロサンゼルス 1Gbps 帯域幅 cn2 gt ライン vps の簡単な評価

cloudpowerallはマレーシアに登録された新しい会社で、主に低コスト路線でVPS(US cn...

trentahost: 月額 100 ドル、E3-1270v5/64g メモリ/2*960g SSD/20g 防御/ポートランド データ センター

米国西海岸の trentahost のポートランド データ センターには、低価格で構成の優れたサーバ...

URLを間違えて入力したときに表示されるクリエイティブな404ページを見てみましょう

ユーザーが間違った URL を入力すると、いつもの 404 ページが表示されます。ほとんどの Web...

初心者ウェブマスターが、完璧な内部ウェブサイト最適化を実現する方法について語る

初心者ウェブマスターとして、あなたも私もウェブマスターの世界の真実を知っているはずです。「コンテンツ...

cloudcone: 時間制 VPS、0.003 ドル/時間、無料スナップショット、その他多くの機能

cloudcone は 5 月に 4 つの新しい格安 VPS プロモーションを実施します。これは公式...