【Minecraft】サーバーの起動構成のG1GCとZGCを対決させてみる

公開日: 2026/8/4


高性能GCの実力はいかに…

さて、前回のブログでは「大量のBotを使ってG1GCの最高の設定を探ってみる」と題して、G1GCの実力を最大限に引き出す検証を行いました。 結果としては、Paper公式がおすすめしているオプション構成よりも、少し手を加えた方がTPSも安定し、GCの数も少なく時間も短い、ということが分かりました。

◆前回の記事
https://dendend12345.com/blog/g1gc%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6bot%E3%81%A7%E6%A4%9C%E8%A8%BC/

では、さらに踏み込んで、次世代のガベージコレクションについて検証してみたいと思います。

今まで起動構成として覇権を握っていたG1GCに刺客がやってきました。 それがZGCです。

ZGCはG1GCとは性質や最適なシーンが違い、一長一短です。 Minecraftサーバーを運用するにあたっては、どちらがより快適に遊べるのか、、

この広大なインターネットの海にすら情報が少ないので、僕の検証が参考になればと思います。

まずは、G1GCとZGCの違いを簡単に見ていきましょう。 ※細かいことはあんまり触れないので、興味がある人は自分で調べてみてね。


G1GC

G1GCは「Garbage First Garbage Collector」という用語の略で、Java9から正式に採用された技術です(それまでは「Parallel GC」という技術でした)。そして、Javaのアップデートがするにつれ、内容もアップデートし、現在でも現役の技術です。 メリットは、ポーズ時間を制御しやすく、大規模アプリでも安定して動作し、チューニングによって高いスループット(CPUがアプリの処理にどれだけ時間を使えたか)が得られる、ということです。 デメリットは、設定を誤ると性能が最大限に引き出せなかったり、超低遅延(ゲームや金融取引システム)が求められるケースには不向き、といった点です。

さっそくここで「ゲームには不向き」といった内容がでてきてしまっていますが、決してG1GCを否定しているわけではないです。簡単に説明しておくと、ここでいうゲームは格闘ゲームやレーシングゲームなどを指すことが多く、Minecraftは例外です。Minecraftは処理を「Tick時間」(1Tick=0.05秒=1/20秒)の中でいかに多くの掲載意を終わらせるかが大事になってくるからです。それさえ許容できれば、プレイヤーにはラグとして認識されない、という理由があります。

ZGC

ZGCは「止まらないGC」を目指して開発されたものです。G1GCとは違い、アプリが動いている最中にもメモリの掃除が進むということです。 メリットとしては、ポーズ時間がとても短く、チューニングはほとんど不要な点です。 デメリットとしては、小規模サーバーではオーバーヘッド(余分な処理やメモリ消費、それに伴う負荷や時間)が起きてしまう、ということです。

◆参考 https://academy.cyzennt.co.jp/blog/%E2%9C%85-gc%E3%81%AE%E7%A8%AE%E9%A1%9E%E3%81%A8%E6%8C%99%E5%8B%95%E3%81%AE%E9%81%95%E3%81%84%EF%BC%88g1-zgc%E3%81%AA%E3%81%A9%EF%BC%89/
Gemini

検証

G1GCとZGCの特徴が分かったところで、早速検証をしてみたいと思います。 今回はZGCについて検証をし、それと前回のG1GCの一番良いパフォーマンスを得られる起動構成と比較してみたいと思います。

検証環境、観察すべき項目は前回とまったく同じにします。一応記載しておきます。


環境

CPU
Core i5 12400 2.5GHz

メモリ
32GB Hz

ストレージ
SSD(NVMe) 1TB

OS
Ubuntu 24.04 LTS

Minerfaft Version
1.21.1

監視用ツール
Prometheus & Grafana
Spark

起動構成メモリ
8GB固定

プレイヤー人数
目標100人

プレイヤーの動き
ちょこちょこ動き回る程度

サーバープロパティ
負荷をかけるために描画距離(View Distance)を10→20に変更


⚠️以下注意です⚠️

・この記事の環境では、自宅/ローカル環境でPaperサーバーの負荷検証をしたものです。
・Botは検証用で、他のサーバーで用いておりません。
・表示上の同時接続数は検証用Botによるもので、実プレイヤー数ではありません。
・Mojangの公式検証ではありません。
・🐌の環境での検証になります。皆さんの環境とは異なる可能性があります。


観察すべき場所

今回の検証では、以下のことを観察要点として進めていきます。
・TPSの数値はどのくらいか
※TPSの測定はマイクラ内の「/tps」で観察しています。
・Tickrateはどのくらいか
・GC時間が長いかどうか
・GCの起こる頻度が高いかどうか


今回はいきなりBot100体でやってみます。

1.オプションなしの起動

java -XX:+UseZGC -Xms8G -Xmx8G -jar *******.jar

起動時間:10秒程度

2

TPSは19.5と問題なし。なかなか安定しているではないか~

と言いたかったのが、何回か再起動をしていると、急に起動時間が30秒もかかった時があった。 とりあえず起動してみたところ、特になくもなかったが、TPSが18.2と若干落ちた。及第点。

2

GCの頻度は少なくなっていそうだが、時間がかかりすぎでは?それに、メモリ使用量ががくっと落ちてるのは印象が悪い…Tickrateも20にぎり追いついていないのは気がかりですね~、、

2.Minecraft 公式Wikiに記載がある起動構成

https://minecraftjapan.miraheze.org/wiki/%E8%BB%BD%E9%87%8F%E5%8C%96

java -XX:+UseZGC -Xms8G -Xmx8G -XX:SoftMaxHeapSize=3G -XX:+AlwaysPreTouch -jar *******.jar

起動時間:90秒程度

起動時間なっが!!! いやいやどうした。

2

ちょいちょいまてひどいぞ…TPSは17.2、GCも起きまくり、時間かかりすぎ。Tickrateもがったがた。 これはいただけませんね…


検証結果

いや、、次世代のGCと聞いていたのでめっちゃ期待しちゃってた分残念無念感すごいです。ただ、これはきっと起動オプションとか環境の得手不得手によるものだと思っているので、くれぐれも「GZCはゴミ!!」なんて感想を抱かないでくださいね!!きっとZGCはもっと輝く場所がある!!


🐌 最後に:サーバー構築運用承ります!

これでもちょっと前(5年、いやもっと前か…)は50人くらい入ってコマンドも動かせるサーバーの管理をしてました。なので、多少なりとも困っている人のお力になれればと~!

「🐌、検証お疲れ様」と思ったかたは、ぜひ下記リンクを読んでみてください。

【✨これから動画投稿・配信を(本気で)やりたい…そんなあなたを応援したい✨】 https://dendend12345.com/request/

最後まで読んでいただき、ありがとうございましたm(__)m

では、また次回のブログで~。