ガベージコレクタと一時停止
通常のTPSでもサーバーが数秒フリーズする理由:ガベージコレクションの仕組み、ログでの確認方法、実際に効果のある対策を解説します。
更新日 2026年8月13日
Javaはポーズ中にメモリを解放します。アプリケーションが停止し、ガベージコレクターがガベージを削除してから、処理が再開されます。ポーズが長引くと、サーバー全体がフリーズしたように見えます。
症状
- 平均TPSは正常ですが、数分に一度、すべてが1~5秒間フリーズします。
- Paperのログに
Can't keep up! Did the system time change, or is the server overloaded?が記録される — 分析。 spark healthでGCに費やされた時間の割合を確認できます。
影響する要因
| 要因 | 影響 |
|---|---|
| ヒープサイズ | ヒープが大きいほどポーズが長くなる |
| ガベージの生成速度 | ループ内でオブジェクトを生成するプラグインやMOD |
| コレクター | デフォルトはG1。ZGCは大きなヒープでも短いポーズになる |
| コア数 | 並列コレクションの方が高速 |
対処方法
- メモリを「余裕を持って」割り当てないでください。 8GBで十分なところに32GBを割り当てると、ポーズが長くなります。目安はピーク時の使用量に30~50%を加えた値です — 必要なメモリ量。
- ガベージの発生源を特定します。
spark heapsummaryでヒープを埋めているものを確認できます。多くの場合、特定のプラグインやMODが原因です。 - フラグ。 Millidaでは調整済みのG1がすでに設定されています。インターネット上の手動設定は、むしろ害になることが多いです — Aikarのフラグ。
やってはいけないこと
「ガベージコレクターを無効化する」ことは試さないでください。そのようなオプションは存在しません。プランのメモリ量を超える -Xmx を設定しないでください。制限を超えようとするとプロセスが強制終了されます — OutOfMemoryError。
Minecraftホスティングオフラインでもサーバーが稼働サーバーを作成
