冒頭の直接回答
Aikarフラグは、マインクラフトサーバーのJVM(Java仮想マシン)を最適化するための起動オプション設定で、Paper、Spigot、Pufferfishなどの主要サーバーソフトウェアで公式に推奨されています。最小・最大ヒープサイズ(-Xms/-Xmx)を同じ値に設定し、G1GCガベージコレクターを使用することで、メモリ管理を効率化し、TPSの安定化とラグを大幅に削減できます。2025年11月現在、Java 21に対応した最新版の設定では、6GB以上のメモリ割り当てが推奨され、適切に設定することで30〜50%のパフォーマンス向上が期待できます。
要点
- AikarフラグはG1GCを活用し、メモリ管理を最適化してGC停止時間を最小化する設定群
- -Xmsと-Xmxを同じ値に設定することで、未使用メモリの無駄をなくし効率化
- Paper公式が推奨する設定で、最低6〜10GBのメモリ割り当てが必要
- Java 21対応の最新版では、さらに洗練された最適化が可能
- 設定後は /spark や /timings でパフォーマンスを検証・調整

Aikarフラグとは?マイクラサーバー最適化の基礎
Aikarフラグの概要と開発背景
Aikarフラグは、マインクラフトサーバー界隈で最も信頼されているJVM最適化設定です。2016年にEmpire Minecraft運営者のAikar氏によって開発され、Paper、Spigot、Purpurfishなどの主要サーバーソフトウェアの公式ドキュメントで推奨されています。
マインクラフトサーバーは、非常に高いメモリ割り当て速度(30人規模のサーバーで毎秒800MB以上)を持ち、ブロック位置などの短命オブジェクトが大量に生成されます。通常のJVMデフォルト設定では、このような負荷に対応できず、頻繁なGC(ガベージコレクション)停止によってTPSが低下し、プレイヤーにラグとして体感されてしまいます。
Aikarフラグは、この問題を解決するために、G1GC(Garbage First Garbage Collector)を最適化し、新世代ヒープの割合を大幅に増やすことで、短命オブジェクトが若いうちに効率的に回収される仕組みを構築します。
従来設定との違いとパフォーマンス向上
従来のJVM設定では、-Xmsを低く設定し、必要に応じてメモリを拡張する方式が一般的でした。しかし、この方式では未使用メモリが発生し、G1GCが最適に動作できません。Aikarフラグでは、-Xmsと-Xmxを同じ値に設定することで、最初から最大メモリを確保し、G1GCが全体のメモリを効率的に管理できるようにします。
実際のパフォーマンステストでは、Aikarフラグを適用することで以下の改善が報告されています。
- 平均GC停止時間:50〜100ms → 10〜30ms(70%削減)
- 若世代GC頻度:1〜2秒ごと → 10秒〜数分ごと(90%削減)
- TPS安定性:15〜19の変動 → 19.5〜20.0の安定維持
- Old世代GC頻度:1時間に数回 → 数時間に1回
PaperMC公式ドキュメントでは、「最低でも6〜10GBのメモリ使用を推奨し、プレイヤー数が少なくても十分なメモリを割り当てることでG1GCが最適に動作する」と明記されています。
2025年最新版Aikarフラグの設定方法
Java 21対応の基本設定
2025年11月現在、マインクラフト1.21.x系列ではJava 21が推奨されています。以下は、Java 21に対応した最新のAikarフラグ基本設定です。
java -Xms10G -Xmx10G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar paper.jar --nogui
この設定の -Xms10G -Xmx10G 部分は、サーバーの物理メモリに応じて変更する必要があります。以下のメモリ別推奨設定を参考にしてください。
メモリ別推奨設定表
| サーバーメモリ | 推奨Xms/Xmx | 想定プレイヤー数 | 用途 |
|---|---|---|---|
| 8GB | 6G | 1-5人 | 小規模・友人サーバー |
| 16GB | 10-12G | 6-20人 | 中規模コミュニティ |
| 32GB | 16-20G | 21-50人 | 大規模サーバー |
| 64GB | 24-32G | 51-100人 | 企業レベル |
| 128GB以上 | 32G以上 | 100人以上 | 商用サーバー |
重要な注意点:サーバーの全メモリをマインクラフトに割り当てないでください。オペレーティングシステムやその他のプロセスのために、1〜2GBの余裕を残す必要があります。例えば、16GBのサーバーであれば、12GB程度をマイクラに割り当てるのが安全です。
起動スクリプトの作成と実行
Linux/Mac用起動スクリプト(start.sh)
#!/bin/bash
java -Xms10G -Xmx10G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar paper.jar --nogui
実行権限を付与して起動します。
chmod +x start.sh
./start.sh
Windows用起動スクリプト(start.bat)
@echo off
java -Xms10G -Xmx10G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar paper.jar --nogui
pause
ダブルクリックで実行できます。
各フラグの詳細解説と技術的背景
メモリ管理に関するフラグ
-Xms / -Xmx(ヒープサイズ設定)
最小ヒープサイズ(-Xms)と最大ヒープサイズ(-Xmx)を同じ値に設定することが、Aikarフラグの最も重要なポイントです。従来の設定では、-Xmsを低く設定してメモリを節約しようとしていましたが、これは逆効果です。
G1GCは、より多くのメモリを与えられるほど効率的に動作します。未使用のメモリがある場合、G1GCは適応的に各リージョンにメモリを割り当て、ポーズ時間を最適化します。必要以上のメモリがあれば、Old世代にプッシュされるだけで、パフォーマンスに悪影響はありません。
-XX:G1HeapRegionSize=8M
デフォルトのヒープリージョンサイズは自動計算されますが、マインクラフトでは明示的に8MBに設定することが推奨されます。このサイズの半分(4MB)を超えるメモリ割り当ては「Humongous」として扱われ、直接Old世代に昇格してしまい、回収が困難になります。特にマインクラフト1.15以降では、デフォルト値が低すぎるケースが多く、大量のメモリがHumongousとして扱われてしまう問題がありました。
ガベージコレクション最適化フラグ
-XX:G1NewSizePercent=30 / -XX:G1MaxNewSizePercent=40
新世代ヒープの割合を、デフォルトの5%から30〜40%に大幅に増やします。マインクラフトは非常に高いメモリ割り当て速度を持ち、短命オブジェクト(ブロック位置など)が大量に生成されます。新世代が小さすぎると、毎秒1〜2回以上の若世代GCが発生し、TPSに深刻な影響を与えます。
新世代を大きくすることで、若世代GCの間隔を延ばし、短命オブジェクトが若いうちに死ぬ時間を確保します。結果として、Old世代への昇格が減少し、全体的なGC効率が向上します。
-XX:MaxGCPauseMillis=200
GC停止時間の目標を200ミリ秒に設定します。これは最大4ティック分の遅延に相当しますが、プレイヤーが認識できる遅延は250ms以上とされており、200msは実質的に体感できません。この値を低くしすぎると、G1GCがメモリを十分に回収できず、Old世代がいっぱいになってフルGCが発生するリスクがあります。
テストでは、この値を200msに設定することで、短いTPS低下は発生するものの、サーバーが即座に回復し、平均TPSには影響がないことが確認されています。
-XX:MaxTenuringThreshold=1
オブジェクトがOld世代に昇格する前のサバイバー空間での最大コピー回数を1回に制限します。マインクラフトでは、ほとんどのメモリがEden世代で回収されますが、一時的なデータがサバイバー空間にオーバーフローします。
デフォルト設定では、オブジェクトが最大15回コピーされてからOld世代に昇格しますが、これには大量の時間がかかります。MaxTenuringThreshold=1に設定することで、2回のGCを生き延びたオブジェクトは長命と判断し、効率的にOld世代に昇格させます。平均GC間隔が10秒以上であることを考慮すると、これによってガベージが昇格することはなく、むしろ若世代GCの停止時間が大幅に短縮されます。
-XX:SurvivorRatio=32
MaxTenuringThresholdを大幅に削減したため、サバイバー空間の使用率も大幅に減少します。このフラグにより、サバイバー空間を縮小し、その分をEden世代に割り当てることで、より多くの短命オブジェクトを効率的に処理できます。
パフォーマンス向上フラグ
-XX:+AlwaysPreTouch
プロセス起動時にメモリをセットアップし、連続したメモリ領域として予約します。これにより、オペレーティングシステムのメモリアクセス速度が向上します。Transparent Huge Pagesを使用する場合は、このフラグが必須です。
-XX:+DisableExplicitGC
多くのプラグインが、メモリ管理を理解せずに明示的にガベージコレクションを呼び出すことがあります。これによってフルGCがトリガーされ、大規模なラグスパイクが発生します。このフラグは、プラグインによる明示的なGC呼び出しを無効化し、悪質なコードからサーバーを保護します。
-XX:+PerfDisableSharedMem
GCがファイルシステムに書き込むことで、ディスクI/Oが高い場合に大きなレイテンシーを引き起こす問題を防ぎます。
GCログの有効化とパフォーマンス監視
GCログ設定(Java 11以降)
Aikarフラグを適用した後、GCの動作を監視することが重要です。以下のフラグを追加することで、GCログを有効化できます。
Java 11以降
-Xlog:gc*:logs/gc.log:time,uptime:filecount=5,filesize=1M
この設定により、logs/gc.log にGCログが記録されます。ログファイルは最大1MBで、5ファイルまでローテーションされます。GCログはパフォーマンスに影響を与えず、常時有効にしておいても問題ありません。
Sparkプラグインによるプロファイリング
GCログに加えて、Sparkプラグインを使用することで、リアルタイムのパフォーマンス分析が可能です。
Sparkプラグインのインストール
- SpigotMC公式ページからダウンロード
plugins/フォルダに配置- サーバーを再起動
基本的な使い方
/spark profiler start # プロファイリング開始
/spark profiler stop # プロファイリング停止とレポート生成
/spark gc # GC統計の表示
/spark heapdump # ヒープダンプの作成
Sparkは、CPUプロファイリング、メモリ分析、GC監視を統合したツールで、Paper公式も推奨しています。生成されたレポートはWeb上で共有でき、他の管理者やコミュニティに相談する際に便利です。
PaperMCとの組み合わせで最大のパフォーマンスを実現
PaperMCの導入とAikarフラグの相乗効果
PaperMCは、Spigotをベースにさらなるパフォーマンス最適化を施したサーバーソフトウェアです。バニラやSpigotと比較して、30〜50%のパフォーマンス向上が報告されています。AikarフラグとPaperMCを組み合わせることで、最大の効果を発揮します。
PaperMCの導入手順
- PaperMC公式サイトから最新版をダウンロード
paper.jarをサーバーフォルダに配置- 上記のAikarフラグ起動スクリプトで
-jar paper.jarを指定 - 初回起動でEULA同意と設定ファイル生成
paper-world-defaults.ymlで追加の最適化設定を調整
paper-world-defaults.ymlの推奨設定
# チャンク最適化
chunks:
auto-save-interval: 6000 # 自動セーブ間隔を延長(5分)
max-auto-save-chunks-per-tick: 6 # 1ティックあたりの最大保存チャンク数
# エンティティ最適化
entities:
spawning:
monster-spawn-max-light-level: 0 # モンスタースポーン光量
behavior:
should-remove-dragon: false # エンダードラゴンの自動削除無効
# ホッパー最適化
hopper:
cooldown-when-full: true # フルホッパーのクールダウン
disable-move-event: false # 移動イベント(プラグイン互換性)
# レッドストーン最適化
unsupported-settings:
fix-invulnerable-end-crystal-exploit: true
これらの設定により、チャンクローディング、エンティティ処理、ホッパーなどの重い処理が最適化されます。
トラブルシューティングとよくある問題
メモリ不足エラーの解決
Aikarフラグ適用後、以下のエラーが出る場合があります。
java.lang.OutOfMemoryError: Java heap space
原因と対処法
- 割り当てメモリが不足している:-Xms/-Xmxの値を増やす
- メモリリークの可能性:Sparkプラグインで
/spark heapdumpを実行し、メモリを大量消費しているプラグインを特定 - チャンクが過剰にロードされている:view-distanceを10以下に削減
Old世代GCが頻繁に発生する場合
Sparkで /spark gc を実行し、Old世代のGC頻度を確認します。1時間に数回以上発生している場合は、以下を調整します。
- G1MixedGCLiveThresholdPercent を 85 に下げる:より早くOld世代を回収
- G1ReservePercent を 15 に下げる:予約メモリを減らしてOld世代に割り当て
- メモリを増やす:根本的な解決として、サーバーメモリを増やす
起動スクリプトが動作しない場合
Linux/Mac
# Java 21がインストールされているか確認
java -version
# 実行権限があるか確認
ls -l start.sh
# 権限付与
chmod +x start.sh
Windows
# Java 21がインストールされているか確認
java -version
# パスにスペースがある場合は引用符で囲む
"C:\Program Files\Java\jdk-21\bin\java.exe" -Xms10G ...
マインクラフトサーバーを快適に動かすためのVPS選び
Aikarフラグを最大限活用するには、十分なメモリと高性能なCPUを持つサーバー環境が不可欠です。自分に合ったサーバーを見つけるには、レンタルサーバー比較診断サイトを利用すると、予算やプレイ人数に応じた最適なVPSを簡単に見つけられます。
ConoHa for GAME(コノハ for GAME)
ConoHa for GAMEは、マインクラフト専用のテンプレートが用意されているゲーム特化型VPSサービスです。初期費用無料で月額1,065円から利用でき、最短25秒でマイクラサーバーが立ち上がります。
管理画面からAikarフラグを適用した起動スクリプトを設定でき、初心者でも簡単に最適化されたサーバーを構築できます。自動バックアップ機能付きで、Javaバージョンの切り替えもワンクリックで可能です。高性能なCPUとSSDを搭載しており、複数人が同時接続してもAikarフラグの効果で快適に動作します。
XServer VPS for Game(エックスサーバー VPS for Game)
XServer VPS for Gameは、国内最大級のホスティング企業が提供するゲーム専用サーバーです。月額830円から利用可能で、マインクラフトサーバーの構築が管理画面から数クリックで完了します。
NVMe SSDを搭載しているため、チャンクのロードや保存が高速で、Aikarフラグと組み合わせることでさらに快適なプレイ環境を実現できます。14日間の無料お試し期間があり、Aikarフラグを適用した実際のパフォーマンスを確認してから契約できる点も魅力です。
KAGOYA CLOUD VPS(カゴヤ CLOUD VPS)
KAGOYA CLOUD VPSは、20年以上の運営実績を持つ老舗企業のVPSサービスです。日額20円から利用できる従量課金制も選択でき、短期間のイベント用サーバーとしても活用できます。
柔軟なスペック変更が可能で、最初は8GBプランでAikarフラグを試し、プレイヤーが増えたら16GBプランに移行する、といった使い方ができます。24時間365日の電話サポートがあり、Aikarフラグの設定でわからないことがあっても安心です。国内データセンターを使用しているため、低遅延で快適なプレイ環境が実現します。
さくら VPS(Sakura VPS)
さくら VPSは、国内VPS市場のパイオニアとして長年の信頼があります。月額643円からと低価格ながら、安定した回線品質とサポート体制を提供しています。
スタートアップスクリプトを利用すれば、Aikarフラグを組み込んだマインクラフトサーバーを自動構築できます。コストを抑えながらもAikarフラグの効果を最大限活用したい方に適しています。管理画面はシンプルで使いやすく、サーバー管理の経験がない方でもAikarフラグ設定を含めた初期セットアップが容易です。
関連動画:Aikarフラグ設定解説
Aikarフラグの設定方法を視覚的に理解したい方には、以下の動画が参考になります。
Aikarフラグを使ってMinecraftサーバーを最適化する方法
この動画では、Aikarフラグの基本的な設定手順と、各パラメータの意味について解説されています。実際の起動スクリプトの作成から実行まで、具体的な手順が紹介されています。
よくある質問(FAQ)
Q1. Aikarフラグはどのサーバーソフトウェアで使えますか?
Paper、Spigot、Purpur、Pufferfish、Fabricなど、Java版マインクラフトのほぼすべてのサーバーソフトウェアで使用できます。特にPaper公式が推奨しており、最も効果を発揮します。統合版(Bedrock Edition)サーバーでは使用できません。Java版専用の最適化技術です。
Q2. 8GBのサーバーメモリでも効果はありますか?
はい、効果はありますが、6GB程度をマインクラフトに割り当てることになり、Aikarフラグの真価を発揮するには少し不足しています。公式では最低10GBを推奨していますが、小規模サーバー(5人以下)であれば6GBでも十分に効果を実感できます。プレイヤーが増えたら16GB以上のサーバーへの移行を検討してください。
Q3. Aikarフラグを設定したのにラグが減りません。原因は何ですか?
Aikarフラグはメモリ管理を最適化しますが、他の要因によるラグには効果がありません。考えられる原因は、CPUボトルネック(シングルスレッド性能が低い)、ディスクI/O遅延(HDD使用)、プラグインの負荷(Sparkで特定)、過剰なエンティティ数(mobcap設定)、ネットワーク遅延(pingコマンドで確認)などです。Sparkプラグインで /spark profiler start を実行し、何がボトルネックになっているかを特定してください。
Q4. Java 8やJava 17でもAikarフラグは使えますか?
Java 8でも使用できますが、2025年現在は推奨されません。Java 21のG1GCは、Java 8と比較して大幅に改善されており、Aikarフラグの効果がより大きくなります。Java 17も使用できますが、マインクラフト1.20.5以降はJava 21が公式推奨となっているため、Java 21への移行を強く推奨します。古いJavaバージョンでは、一部のフラグが機能しない可能性があります。
Q5. Aikarフラグを適用したら逆にラグが増えました。どうすればいいですか?
メモリ割り当て量が不適切な可能性があります。物理メモリの80%以上をマインクラフトに割り当てていませんか。OSやその他のプロセスのために1〜2GBの余裕を残してください。また、G1HeapRegionSizeが適切でない場合もあります。8Mに設定されているか確認してください。それでも改善しない場合は、MaxGCPauseMillisを250に増やしてみてください。GCログを確認し、Old世代が頻繁にフルになっている場合は、メモリ割り当てを増やす必要があります。
まとめ
Aikarフラグは、マインクラフトサーバーのパフォーマンスを劇的に改善する最も効果的な最適化手法です。-Xmsと-Xmxを同じ値に設定し、G1GCの新世代割り当てを増やすことで、GC停止時間を最小化し、TPSの安定化とラグの大幅削減を実現できます。2025年11月現在、Java 21対応の最新設定では、6GB以上のメモリ割り当てが推奨され、PaperMCと組み合わせることで最大の効果を発揮します。
設定後は、Sparkプラグインや /timings でパフォーマンスを定期的に監視し、サーバー環境に合わせて微調整することが重要です。十分なメモリと高性能CPUを備えたVPSを選び、レンタルサーバー比較診断サイトで最適なサーバーを見つけて、快適なマイクラサーバー運営を始めましょう。

