【Minecraft工業化】ゲーム開始後チャンク読み込みや移動するだけでフリーズして落ちる問題

最近6年スペックを上げていないのでさすがにキツくなってきているけれど、工業化でやるとバージョンは1.7.10になるし、まあ大丈夫だろと思ってたけど、やっぱだめですね。工業化を進めてLogisticsPipesで倉庫を設計してそれが中規模程度になり、加工パイプを使って生産LINEを整備し始めたくらいで落ちるようになってきました。fpsは場所によって違いますが大体20から30くらい。



スペックを疑う

LogisticsPipesの倉庫を整備し始める前、MFR2で牧場作って大量に牛と豚を飼育していたときにも重くなったけれど、その時は起動オプションを変えつつ、重さの直接的な原因になっていたMOD「DynamicTanks」を削除することでカクカクしない程度には改善できました。でも今回はなかなかに厳しい。最近入れた小物MOD(大容量チェストとか)を外してみたけど効果あるはずもなく、大物MODも外してみたりいろいろ試したけどダメで、これはもうスペックの問題かなあと言う感じ。


ちなみにエラーログはこんな感じ。

# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000006969f870, pid=11780, tid=0x0000000000002e30
#
# JRE version: Java(TM) SE Runtime Environment (8.0_144-b01) (build 1.8.0_144-b01)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.144-b01 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C  [atio6axx.dll+0x8df870]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.

(以下略)

これがグラボのエラーらしいので、グラボのメモリに乗り切らなくなってるってことかなあ。

# C  [atio6axx.dll+0x8df870]

グラボのVRAMは2GBしかないので、その辺りで何か起きているのかも。



……というのを書いてなんとなく思いついた。もしかすると起動オプションの設定が大きすぎるかも。



現在設定している起動オプション

起動オプションは拾いものの設定を少しだけ変えて入れているのだけど、重かった時期に片っ端から試して上手く行ったやつを採用してるので設定がちょっと極端。んで、その中に、

-XX:MetaspaceSize=15G -XX:MaxMetaspaceSize=15G

っていう項目があり、ここは変えずにそのまま入れてました。検索でヒットした有志の解説があったので引用すると、

【PC】Minecraft MOD総合.0.21.5 [無断転載禁止]©2ch.net

MetaspaceSize(Perm)はクラスやそのメソッドの情報が入ってるであってるけどclassファイルはマイクラで言えば大部分がModでのバニラ改変作業のこと 実際に判定処理するのはNew領域ですが、命令コードが全て格納されてるんで領域が小さいと命令呼び出すのに時間がかかります MaxNewSizeはチャンクにアクセスする係 これが大きいとチャンク処理そのものが高速化する(但し、Xmxの1/4くらいにすること) それから、いくらMaxNewSizeが大きくてもMetaspaceSizeが小さいと命令が飛んで来ないので意味なしです XmxはMaxNewSizeが各Modでそれぞれチャンク判定して最終的に鉱石/Mob配置が決定した時に描写として使われるOld領域がメインですね ブロックが壊れたかの判定はMaxNewSizeですが、壊れたものとして描写する時にXmxのOld領域を使いますので描写処理の多い魔術や影Modとかでは有用です

オススメの設定はスペックと環境次第なので何とも言えないが、一応自分の設定を書いておくと搭載メモリ16Gで -Xmx8G -Xms8G -Xmn2048M -XX:MaxNewSize=2048M -XX:MetaspaceSize=6144M -XX:MetaspaceSize=6144M (Xmx + Metaspace = 14G割当)

各種で最低と最大メモリを同じにしてるけど、これは一定メモリ与えたほうが体感速度が上がるためです メモリが8GならOS領域で2Gくらい残すとしても6Gは使えるし -Xmx4G -Xms4G -Xmn1024M -XX:MaxNewSize=1024M -XX:MetaspaceSize=2048M -XX:MetaspaceSize=2048Mくらいかな? あとは自分で微調整してほしい あと1チャンクだけ点滅したりしてたらXmnだけ設定してMaxNewSizeは削除すると改善するかも


なるほど、これはMOD用のメモリ確保量の設定みたいですね。僕のしていた設定ではこれが15GBになってますが、RAM12GB、VRAM2GBのうちの環境ではこんなに確保できるはずもなく。ていうかそもそもMetaspaceSizeって普通は多くても512MBとかで十分ですよね。少し減らそうかと思って、上の設定、

-XX:MaxNewSize=1024M -XX:MetaspaceSize=2048M -XX:MetaspaceSize=2048M

にしてみたけどこれでもダメ。Chrome先生がかなりのメモリ専有してるからそのせいもあるかもしれない。じゃあって言うんで、この部分を起動オプションから削除してみたらば……見事、ちゃんと動くようになりました。場所によってはfps不安定になってカクつくこともあるけれど、少なくとも落ちるってことは無くなりました。


良かれと思ってやった設定がこんなことになるとは……意味わからずにコピペするの危険ですね。
……とはいえ、ここ何日かずっと落ちまくっていたので、一回落ちなかったくらいではまた不安なんですけど。このまま行ければ良いなー。



誰にでも当てはまる原因ではないかも知れませんが、困っている誰かの参考になれば。


設定項目の解説が欲しい人は、この辺も読んでみてください。


Optimising Your Minecraft: Jvm Arguments | Xeal Gaming Community – Crafting Bonds




ちなみに:「Failed to write core dump.」とは

エラーファイルの先頭部分に、「Failed to write core dump. Minidumps are not enabled by default on client versions of Windows」という部分があって、これを手がかりに改善しようとしている情報が国内海外問わずたくさんあるんですけど。これさー、エラーの原因でもなんでも無くて、エラーが発生してjavaが落ちたんでその内容をDumpファイルにして残そうとしたけど、Windowsの設定がそうなってなくて残せなかったんだよね、っていう連絡だけですよね。いわば「エラーが発生しました」くらいの意味。


【対処法】PC版マインクラフトで「Failed to write core dump」と表示されソフトが起動できなくなった場合の対処法4つ

今回対処法を調べてわかったのは、この不具合を経験したユーザーは海外を中心にけっこういるらしということです。そのため、Google検索すると腐るほど不具合情報が出てきます。

とはいえ、なかなかコレと言えるような決定的な対処法があるわけでもなく、結局ユーザーによってケースバイケースであるようです。



当たり前ですよね。エラーの原因はユーザーの環境によって様々だけれど、「エラーが発生しました」という警告は同じなんだから。だから、これを解消しようといろいろやってみたところで出来ることはエラーの内容をまとめたDumpファイルが出来るだけで、エラーそのものの解決にはならないです。逆に言えば、エラーが解決されれば、このメッセージは自然に表示されなくなります。