放送裏話:Minecraftの性能向上方法(チューニング)について(2018/07/04更新)
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

放送裏話:Minecraftの性能向上方法(チューニング)について(2018/07/04更新)

2016-10-21 04:19
  • 1
前の放送でマイクラのメモリーが足りないとか言っていたのでメモ代わりも含めて紹介
起動しないとかエラーログ的にメモリかどうか聞きたい場合はコメントにでも

2018/03/26:一部修正と加筆
2018/06/04:加筆
2018/07/04:加筆と修正

この記事はJava8の最新版を目標として書いてます(Java9はまだMODとかで使えないからね・・・)
Javaは脆弱性が多いのでマイクラの古いバージョンでMODを使用しない限り最新版利用を推奨します
わからないことが有ったらコメントで聞いてください

1.Minecraftの処理について

MinecraftはJavaの仮想マシン(JVM)を作ってその上でゲームを動かします
なのでJVMのオプション(以下JVMオプション)を指定することにより、ある程度性能向上が見込めます
基本的にメモリーの設定です、よくメモリーの割当を増やすとかもこれですね

2.MinecraftのJVMオプションの指定方法

 1.Minecraftのランチャーを起動し
 2.「起動オプション」をクリックします
 3.その中の「高度な設定を有効にする」にオンにします
 4.JVMオプションを指定したいプロファイルを選択
 5.JVMの引数を有効にし、右の空白にオプションを入力して保存
 6.Minecraftが無事起動すれば指定成功
 次からオプションについて説明していきます

3.JVMのオプションについて(一部)

専門用語は各自ググってください 数字の後のMはメガバイト、Gはギガバイトです
メモリーは自身の環境に合わせて変更してください、わからなければコメントをください
・JVMのメイン処理領域(ヒープ領域※New領域+Old領域)の設定
  指定方法:-Xmx -Xms
  Xmsで初期値、Xmxで最大値指定します。初期値と最大値は一致推奨です。
  例:-Xmx4G -Xms4G

・MODのクラスなどの情報を格納する領域(Metaspace領域)の設定(Java8以降)
  指定方法:-XX:MetaspaceSize -XX:MaxMetaspaceSize
  MODを大量導入、もしくは重量級のMODを導入する際にはこの値を変更しないと
  重たくなったりします
  -XX:MetaspaceSizeで初期値、-XX:MaxMetaspaceSizeで最大値を指定します。
  初期値と最大値は一致推奨です。多くても1Gくらいしか消費しません
  例:-XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=512M

・メモリー管理方法の指定
  上記のXmxやXmsで確保できるメモリーの量に合わせてください
  両方書いてあると両方共無効になったり起動しなくなるので片方は消しておいてください
  ・Forgeインストール時と推奨設定はConcurrent Mark-Sweep Collector方式です
   大量のメモリを消費する設定の場合、こっちの方がG1GCよりちょっと早かった
    指定方法:XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode
    一度に全てのメモリを掃除せず、細かい単位でメモリーを掃除しJVM内のメモリー
   空き領域を増やす設定です。

  ・ある程度メモリーが確保できる場合や細かいメモリ設定が面倒くさい場合は
   G1 GC方式を使いましょう
    指定方法:-XX:+UseG1GC
   JVM内のメモリーを細かく細分化し各種領域を割り当てて、JVM起動中に足りなかった
   りした場合、各種領域の割当を自動で変更してくれる方式です
   ・G1GCで設定するといい項目
    ・GC時に停止する最大ミリ秒を指定する(デフォルト値は200)
      指定方法:-XX:MaxGCPauseMillis 例:-XX:MaxGCPauseMillis=15
    ・G1GCによるメモリの最適化を行うJavaのヒープ領域の占有率のしきい値を設定
     (デフォルト値は45)
      指定方法:-XX:InitiatingHeapOccupancyPercent
    例:-XX:InitiatingHeapOccupancyPercent=40

・大量のMODを導入して大量のメモリを消費する際に設定しておくといいオプション(G1GCだとNew領域の初期値の設定とスタックサイズの指定のみ行うこと)
  ・ヒープ領域のNew領域の初期値を決定するオプション
   マイクラの場合Old領域とNew領域のEden領域の比率を同じにするといい感じ
    指定方法:-Xmn 例:-Xmn2G
  ・New領域のEden領域の比率を設定する残りは2つのSurvivor領域に均等配分されます
   Survivor領域に入り切らなかった物がOld領域に入ってしまうのでVisualJVMなどで
   JVMを監視して、明らかにSurvivor領域が足らずNew領域やピープ領域を確保できない
   ようなら設定する
    指定方法:-XX:SurvivorRatio 例:-XX:SurvivorRatio=8
  ・スタックサイズを指定する(64Bit版だとデフォルトで1G)
   メモリ使ってる設定なのに突然マイクラが落ちるとかあったら大体これが足りなくて
   メモリ不足で落ちてます(主はそうでした)
    指定方法:-Xss  例-Xss2G

・GCに使用する並列化スレッド数を指定する(論理CPU数が8以下の場合は論理CPU数、
 論理CPU数が9以上の場合は8+(論理CPU数−8)×(5÷8)がデフォルトの値になります)
  指定方法:-XX:ParallelGCThreads 例:-XX:ParallelGCThreads=10
・Concurrent Markingの処理を並列実行するスレッド数を指定する
 ((上で指定しているParallelGCThreads数+2)/4がデフォルトの数値となります)
  指定方法:-XX:ConcGCThreads 例:-XX:ConcGCThreads=2
・オブジェクト上に持つポインタのビット数を減らし、オーバーヘッドを減らすことでJVMの動作を高速化するための作業領域のサイズ設定
  ヒープ領域を大量に確保できる場合(32GB以上)は「-XX:-CompressedClassPointers」で無効を推奨します
  指定方法:-XX:CompressedClassSpaceSize
  1M~3GBの間で設定します。
  例:-XX:CompressedClassSpaceSize=32M

・その他使用するといいオプション
   サーバー向けの仕様でJVMを起動させる
    指定方法:-server
   将来のアップデートでデフォルトになりそうな最適化フラグを有効にする
    指定方法:-XX:+AggressiveOpts
   変な命令でメモリーを開放することが無いようにする。
    指定方法:-XX:+DisableExplicitGC
   衝突が起こらない同期のパフォーマンスを向上させる。
    指定方法:-XX:+UseBiasedLocking
   Get<Primitive>Fieldの最適化版を使う
    指定方法:-XX:+UseFastAccessorMethods
   スレッドローカルのオブジェクト割り当てブロックを使用する
    指定方法:-XX:+UseTLAB
   ラージメモリページをリクエストできるようにする
    指定方法:-XX:+UseLargePages
   メモリー処理時に多発するエラー「GC overhead limit exceeded」を無効化する。
    指定方法:-XX:-UseGCOverheadLimit
   
おまけ

放送で使ってるオプションは以下のとおり(2018/07/04更新)
-server -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+UseLargePages -XX:+UseTLAB -XX:+UseFastAccessorMethods -XX:+AggressiveOpts -XX:+UseBiasedLocking -Xmx58G -Xms58G -Xmn45G -XX:SurvivorRatio=7 -XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=512M -XX:CompressedClassSpaceSize=1G -Xss5G -XX:ParallelGCThreads=16 -XX:ConcGCThreads=4


広告
×
参考になりました!ありがとうございます!
5ヶ月前
コメントを書く
コメントをするには、
ログインして下さい。