Kron4ek / minecraft-vortex-launcher

Fast, lightweight and easy to use Minecraft launcher
GNU General Public License v3.0
306 stars 30 forks source link

Огромная разница в потреблении памяти между версиями 1.1.12 и любой после неё #44

Closed lua-rocks closed 2 years ago

lua-rocks commented 2 years ago

При запуске майнкрафта 1.16.5 на linux x64 с jre8 через лаунчер 1.1.12 и fabric 0.11.7 (без модов) она потребляет примерно 810 мегабайт памяти.

Это последние версии, при которых игра требовала так мало памяти. Если я обновляю что угодно из перечисленного: лаунчер, майнкрафт, fabric или джаву, то игра со старта потребляет около 2 гб и больше, при всех абсолютно тех же настройках.

Не могу понять точно в чём причина, как будто во всём одновременно.

Kron4ek commented 2 years ago

Параметры запуска игры могут отличаться между 1.1.12 и более новыми версиями лаунчера, в настройках лаунчера включи "Save launch string to file" и сравни строку запуска в файле launch_string.txt. Хотя если ты говоришь обновление Java на это тоже влияет, тогда лаунчер тут уже ни при чем.

Kron4ek commented 2 years ago

В принципе, если выделить игре 1 GB или меньше памяти, то она будет пытаться ужиматься в этот лимит. Но не факт, что будет хорошо работать.

lua-rocks commented 2 years ago

Я имею ввиду, что я переключаю джаву между 8 и 17 когда переключаюсь между версиями майнкрафта 1.16.5 и выше. Если я просто сменю версию, то ничего не запустится, потому что ранние версии не работают на 17, а поздние не работают на 8.

Другими словами, само по себе обновляние джавы скорее всего на это не влияет.

lua-rocks commented 2 years ago

Спасибо за совет, сейчас поэкспериментирую.

lua-rocks commented 2 years ago

Вот launch_string из 1.1.12 при котором потребление памяти 810 мегабайт:

"java" -Xmx2000M -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -Xmn128M "-Djava.library.path=versions/1.16.5/natives" -cp "libraries/net/fabricmc/tiny-mappings-parser/0.2.2.14/tiny-mappings-parser-0.2.2.14.jar:libraries/net/fabricmc/sponge-mixin/0.9.4+mixin.0.8.2/sponge-mixin-0.9.4+mixin.0.8.2.jar:libraries/net/fabricmc/tiny-remapper/0.6.0/tiny-remapper-0.6.0.jar:libraries/net/fabricmc/access-widener/1.0.0/access-widener-1.0.0.jar:libraries/net/fabricmc/fabric-loader-sat4j/2.3.5.4/fabric-loader-sat4j-2.3.5.4.jar:libraries/com/google/jimfs/jimfs/1.2-fabric/jimfs-1.2-fabric.jar:libraries/org/ow2/asm/asm/9.1/asm-9.1.jar:libraries/org/ow2/asm/asm-analysis/9.1/asm-analysis-9.1.jar:libraries/org/ow2/asm/asm-commons/9.1/asm-commons-9.1.jar:libraries/org/ow2/asm/asm-tree/9.1/asm-tree-9.1.jar:libraries/org/ow2/asm/asm-util/9.1/asm-util-9.1.jar:libraries/net/fabricmc/intermediary/1.16.5/intermediary-1.16.5.jar:libraries/net/fabricmc/fabric-loader/0.11.7/fabric-loader-0.11.7.jar:libraries/com/mojang/patchy/1.1/patchy-1.1.jar:libraries/oshi-project/oshi-core/1.1/oshi-core-1.1.jar:libraries/net/java/dev/jna/jna/4.4.0/jna-4.4.0.jar:libraries/net/java/dev/jna/platform/3.4.0/platform-3.4.0.jar:libraries/com/ibm/icu/icu4j/66.1/icu4j-66.1.jar:libraries/com/mojang/javabridge/1.0.22/javabridge-1.0.22.jar:libraries/net/sf/jopt-simple/jopt-simple/5.0.3/jopt-simple-5.0.3.jar:libraries/io/netty/netty-all/4.1.25.Final/netty-all-4.1.25.Final.jar:libraries/com/google/guava/guava/21.0/guava-21.0.jar:libraries/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar:libraries/commons-io/commons-io/2.5/commons-io-2.5.jar:libraries/commons-codec/commons-codec/1.10/commons-codec-1.10.jar:libraries/net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar:libraries/net/java/jutils/jutils/1.0.0/jutils-1.0.0.jar:libraries/com/mojang/brigadier/1.0.17/brigadier-1.0.17.jar:libraries/com/mojang/datafixerupper/4.0.26/datafixerupper-4.0.26.jar:libraries/com/google/code/gson/gson/2.8.0/gson-2.8.0.jar:libraries/com/mojang/authlib/2.1.28/authlib-2.1.28.jar:libraries/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar:libraries/org/apache/httpcomponents/httpclient/4.3.3/httpclient-4.3.3.jar:libraries/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar:libraries/org/apache/httpcomponents/httpcore/4.3.2/httpcore-4.3.2.jar:libraries/it/unimi/dsi/fastutil/8.2.1/fastutil-8.2.1.jar:libraries/org/apache/logging/log4j/log4j-api/2.8.1/log4j-api-2.8.1.jar:libraries/org/apache/logging/log4j/log4j-core/2.8.1/log4j-core-2.8.1.jar:libraries/org/lwjgl/lwjgl/3.2.2/lwjgl-3.2.2.jar:libraries/org/lwjgl/lwjgl-jemalloc/3.2.2/lwjgl-jemalloc-3.2.2.jar:libraries/org/lwjgl/lwjgl-openal/3.2.2/lwjgl-openal-3.2.2.jar:libraries/org/lwjgl/lwjgl-opengl/3.2.2/lwjgl-opengl-3.2.2.jar:libraries/org/lwjgl/lwjgl-glfw/3.2.2/lwjgl-glfw-3.2.2.jar:libraries/org/lwjgl/lwjgl-stb/3.2.2/lwjgl-stb-3.2.2.jar:libraries/org/lwjgl/lwjgl-tinyfd/3.2.2/lwjgl-tinyfd-3.2.2.jar:libraries/com/mojang/text2speech/1.11.3/text2speech-1.11.3.jar:versions/1.16.5/1.16.5.jar" net.fabricmc.loader.launch.knot.KnotClient  --username luarocks --version fabric-loader-0.11.7-1.16.5 --gameDir /home/luarocks/.minecraft~/ --assetsDir assets --assetIndex 1.16 --uuid e66b5219003a385b929c5bee9e967607 --accessToken 00000000000000000000000000000000 --userType mojang --versionType release 

Вот из 1.1.17, который жрёт 2 гигабайта:

"java" -Xmx2000M -Xss1M -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M -Dlog4j2.formatMsgNoLookups=true -Dlog4j.configurationFile=assets/log_configs/client-1.12.xml "-DFabricMcEmu= net.minecraft.client.main.Main " "-Djava.library.path=versions/1.16.5/natives"   "-cp" "libraries/net/fabricmc/tiny-mappings-parser/0.2.2.14/tiny-mappings-parser-0.2.2.14.jar:libraries/net/fabricmc/sponge-mixin/0.9.4+mixin.0.8.2/sponge-mixin-0.9.4+mixin.0.8.2.jar:libraries/net/fabricmc/tiny-remapper/0.6.0/tiny-remapper-0.6.0.jar:libraries/net/fabricmc/access-widener/1.0.0/access-widener-1.0.0.jar:libraries/net/fabricmc/fabric-loader-sat4j/2.3.5.4/fabric-loader-sat4j-2.3.5.4.jar:libraries/com/google/jimfs/jimfs/1.2-fabric/jimfs-1.2-fabric.jar:libraries/org/ow2/asm/asm/9.1/asm-9.1.jar:libraries/org/ow2/asm/asm-analysis/9.1/asm-analysis-9.1.jar:libraries/org/ow2/asm/asm-commons/9.1/asm-commons-9.1.jar:libraries/org/ow2/asm/asm-tree/9.1/asm-tree-9.1.jar:libraries/org/ow2/asm/asm-util/9.1/asm-util-9.1.jar:libraries/net/fabricmc/intermediary/1.16.5/intermediary-1.16.5.jar:libraries/net/fabricmc/fabric-loader/0.11.7/fabric-loader-0.11.7.jar:libraries/com/mojang/patchy/1.1/patchy-1.1.jar:libraries/oshi-project/oshi-core/1.1/oshi-core-1.1.jar:libraries/net/java/dev/jna/jna/4.4.0/jna-4.4.0.jar:libraries/net/java/dev/jna/platform/3.4.0/platform-3.4.0.jar:libraries/com/ibm/icu/icu4j/66.1/icu4j-66.1.jar:libraries/com/mojang/javabridge/1.0.22/javabridge-1.0.22.jar:libraries/net/sf/jopt-simple/jopt-simple/5.0.3/jopt-simple-5.0.3.jar:libraries/io/netty/netty-all/4.1.25.Final/netty-all-4.1.25.Final.jar:libraries/com/google/guava/guava/21.0/guava-21.0.jar:libraries/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar:libraries/commons-io/commons-io/2.5/commons-io-2.5.jar:libraries/commons-codec/commons-codec/1.10/commons-codec-1.10.jar:libraries/net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar:libraries/net/java/jutils/jutils/1.0.0/jutils-1.0.0.jar:libraries/com/mojang/brigadier/1.0.17/brigadier-1.0.17.jar:libraries/com/mojang/datafixerupper/4.0.26/datafixerupper-4.0.26.jar:libraries/com/google/code/gson/gson/2.8.0/gson-2.8.0.jar:libraries/com/mojang/authlib/2.1.28/authlib-2.1.28.jar:libraries/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar:libraries/org/apache/httpcomponents/httpclient/4.3.3/httpclient-4.3.3.jar:libraries/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar:libraries/org/apache/httpcomponents/httpcore/4.3.2/httpcore-4.3.2.jar:libraries/it/unimi/dsi/fastutil/8.2.1/fastutil-8.2.1.jar:libraries/org/apache/logging/log4j/log4j-api/2.8.1/log4j-api-2.8.1.jar:libraries/org/apache/logging/log4j/log4j-core/2.8.1/log4j-core-2.8.1.jar:libraries/org/lwjgl/lwjgl/3.2.2/lwjgl-3.2.2.jar:libraries/org/lwjgl/lwjgl-jemalloc/3.2.2/lwjgl-jemalloc-3.2.2.jar:libraries/org/lwjgl/lwjgl-openal/3.2.2/lwjgl-openal-3.2.2.jar:libraries/org/lwjgl/lwjgl-opengl/3.2.2/lwjgl-opengl-3.2.2.jar:libraries/org/lwjgl/lwjgl-glfw/3.2.2/lwjgl-glfw-3.2.2.jar:libraries/org/lwjgl/lwjgl-stb/3.2.2/lwjgl-stb-3.2.2.jar:libraries/org/lwjgl/lwjgl-tinyfd/3.2.2/lwjgl-tinyfd-3.2.2.jar:libraries/com/mojang/text2speech/1.11.3/text2speech-1.11.3.jar:versions/fabric-loader-0.11.7-1.16.5/fabric-loader-0.11.7-1.16.5.jar" net.fabricmc.loader.launch.knot.KnotClient --username luarocks --version fabric-loader-0.11.7-1.16.5 --gameDir . --assetsDir assets --assetIndex 1.16 --uuid e66b5219003a385b929c5bee9e967607 --accessToken 00000000000000000000000000000000 --userType mojang --versionType release 

Никаких файлов я не менял, просто запустил из разных лаунчеров.

lua-rocks commented 2 years ago

Ок, при таких custom launch parameters в 1.1.17 потребление памяти становится 810 мб:

-Xmx2000M -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -Xmn128M

Так что проблема с лаунчером решена, хотя мне кажется, что если я обновлю версию майнкрафта, то всё снова сломается. Сейчас проверю...

lua-rocks commented 2 years ago

Java 17 не умеет UseConcMarkSweepGC 😢

Kron4ek commented 2 years ago

Она не умеет -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode, но их можно убрать и тогда запустится.

lua-rocks commented 2 years ago

Да, запускается, но памяти кушает много без этих параметров.

Kron4ek commented 2 years ago

Ну, новые версии игры прожоливые, с каждой новой версии игра все более требовательна к памяти и железу, так что неудивительно. Вряд ли даже эти параметры бы помогли.

lua-rocks commented 2 years ago

Окей, большое спасибо.