発生対象
- 起動引数から大きなメモリ量を割り当てている -Xmx24G 等
- 多くのMODを導入している
- F3のデバッグ情報画面で割り当てられた膨大なメモリを消費している
症状
マインクラフトをプレイ中、突如fpsが低下(1~5fps)、しばらくの間(1、2分ほど)ゲームがフリーズする。
その後解消するが、すぐにfpsの低下を繰り返す。
原因
GC(ガーベジコレクション)の動作
リソースリーク
GC(ガーベジコレクション)とは、Javaに搭載されている自動でメモリを掃除してくれる仕組みのようなものです。
ですが使用メモリ量が大きければ大きいほど、リフレッシュ(掃除開始)時のラグが大きくなります。
そのため後述のリソースリークと合わさり、異常なラグが生じていたと考えられます。
リソースリークとは何らかの要因によってGCがメモリの一部を掃除できなくなった状態を指します
今回発生したラグでは使用メモリが95%~100%を繰り返しており、ほとんどが開放できない状態(掃除しても95%にするのが限界)になった。
もしくは普通にメモリを使い切ってしまいGCが常時フル稼働する状態になり、異常なラグが発生したと推測しました。
対処方法
- 導入modの数を減らす
- 二分探索を行い競合が起きるmodの組み合わせを特定する
- 総当りで競合が起きるmodの組み合わせを特定する
- メモリ割り当て量を更に増やし、物理的にリソースリークに対抗する(オススメできません)
私の場合は、特定ディメンションでのみ発生し、modが多すぎてmodを追加すると、即ArrayIndexOutOfBoundsExceptionが発生する状態にあったので、そもそもそのディメンションに立ち寄らないということで解決しました。
GCやリソースリークに詳しいわけではないので、ツッコミどころがあれば是非お願いします。
このトピックに関係しない質問などは書き込まないでください
ゲーム中のラグ報告、質問などは適切なカテゴリ、トピックにお願いします