Minecraft 1.18.2 / Ram Probleme mit ManyMC

Sleepless86

Unterstützer
22 Apr 2021
726
Moin,

seit meinem Update auf die 1.18.2 habe ich etwas seltsame Probleme mit dem Arbeitsspeicher.

Bis Version 1.18.1 haben bei mir die Settings min 128mb und max 1024mb vollkommen ausgereicht, auch wenn das Spiel über mehrere Tage geöffnet war.
Der genutzte Speicher ging maximal bis 800mb und wieder runter auf ca. 300mb.
Bis zum Update auf 1.18.2 gab es keinerlei Spielabstürze, Ruckler oder ähnliches.
Ein damaliger Test mit 4GB hatte nur für lags beim leeren des Speichers gesorgt, mit 1024mb lief alles perfekt.

Seit 1.18.2 läuft der Arbeitsspeicher nach kurzer Spielzeit voll (der min Wert geht dabei nicht mehr runter sondern steigt mit der Zeit stark an).
Mit nur 1024mb zugewiesen dauert es ca. 20 Minuten bis die fps auf 1 zusammenbrechen und das Spiel anschließend mit der angehängten Fehlermeldung abstürzt.
Mittlerweile bin ich auf 3GB zugewiesenen Arbeitsspeicher hochgegangen, dadurch schaffe ich es ungefähr 2-3 Stunden aktiv zu spielen.
Der min Wert steigt aber auch hier mit der Zeit an bis er die 3GB erreicht hat und der Spielabsturz folgt.

Da ich mit mehr als 3GB zugewiesenem Arbeitsspeicher durchgehend lags habe (soweit ich das verstanden habe wegen dem Garbagecollector der mehr erledigen muss), möchte ich mit dem Wert nicht höher gehen.

Mich würde interessieren, ob ich mit dem Problem alleine bin - denn mit Google konnte ich zumindest auf die aktuelle Version bezogen nichts finden.
Vielleicht hat ja sogar jemand einen Lösungsvorschlag. :)

Grüße Sleepless

P.s.
Das Problem tritt trotz Neuinstallation auf, egal ob Vanilla, Optifine, Fabric mit Sodium usw.
Auch diverse Mods wie Ferrite Core, Foam Fix, Forget Me Chunk etc. bringen leider keine Besserung.
Sobald ich die 1.18.1 nutze ist das Problem nicht mehr vorhanden.
 

Anhänge

  • Bildschirmfoto 2022-04-06 um 19.52.29.jpg
    Bildschirmfoto 2022-04-06 um 19.52.29.jpg
    254,6 KB · Aufrufe: 201
  • Gefällt mir
Wertungen: Gundal
Hey Sleepless,

auf den ersten Blick kann ich so kein Problem finden. Kannst du mal deine JVM-Argumente aus dem Launcher reinposten? Ich kann gerade nicht nachgucken welche standardmäßig genutzt werden, aber sind die Minimum Angaben notwendig? Vielleicht sammelt dich deswegen da was an, weil es den Cache nicht vollständig löschen kann?

Gruß,
Quaeft
 
Ich kann gerade nicht nachgucken welche standardmäßig genutzt werden, aber sind die Minimum Angaben notwendig? Vielleicht sammelt dich deswegen da was an, weil es den Cache nicht vollständig löschen kann?
Da ich mit einem arm System unterwegs bin und MC mit dem Standart Launcher aufgrund von fehlender arm Optimierung katastrophal läuft nutze ich ManyMC (ein für arm optimierter Abkömmling von MultiMC).
Dort muss ich min & max Werte angeben, komme also nicht drumherum. Dafür gibt es dort nur Eingabefelder (siehe Screenshot).
Bis 1.18.1 hatte ich dort die besagten 128 min sowie 1024 max angegeben.

Die Startparameter sollten laut Recherche dementsprechend folgende sein:
-xms1024M -xmx3072M

Mit anderen möglichen Werten die man im Netz zum Thema gc optimieren findet hatte ich experimentiert - gab aber keine Verbesserung, deswegen wieder entfernt.
 

Anhänge

  • Bildschirmfoto 2022-04-14 um 14.02.20.jpg
    Bildschirmfoto 2022-04-14 um 14.02.20.jpg
    93,5 KB · Aufrufe: 216
Zuletzt bearbeitet:
Ich glaube der Fehler befindet sich genau dort.
Dein minimaler Arbeitsspeicher ist nicht 128MB, sondern 1024MB.
Dein PermGen ist 128MB groß. Sollte laut
Permanent Generation (which is “Perm” in PermSize)

The permanent generation is used to hold reflective of the VM itself such as class objects and method objects. These reflective objects are allocated directly into the permanent generation, and it is sized independently from the other generations. Generally, sizing of this generation can be ignored because the default size is adequate. However, programs that load many classes may need a larger permanent generation.
PermSize is additional separate heap space to the -Xmx value set by the user. The section of the heap reserved for the permanent generation holds all of the reflective data for the JVM. You should adjust the size accordingly if your application dynamically load and unload a lot of classes in order to optimize the performance. Basically, he heap stores the objects and the perm gen keeps information about the objects inside of it. Therefore, the larger the heap, the larger the perm gen needs to be.

By default, MaxPermSize will be 32mb for -client and 64mb for -server. However, if you do not set both PermSize and MaxPermSize, the overall heap will not increase unless it is needed. When you set both PermSize and MaxPermSize, for example, 192mb, the extra heap space will get allocated when it startup and will stay allocated.
hier 4x der Default-Wert sein, aber vielleicht liegt es ja trotzdem daran.

@BlackHole könnte was zum PermGen beitragen, was es bewirkt, etc. Ich lese nur, dass der in Java 8 in einer Art und Weise geändert wurde. Das ist aber schon lange her und hat nichts mit der 1.18.2 zu tun. Desweiteren hast du Recht, dass man nichts ähnliches findet.


Der zweite Satz finde ich hier auch interessant und kann dir weiterhelfen:
[EDIT]
https://stackoverflow.com/a/3003986
 
Zuletzt bearbeitet:
Ich glaube der Fehler befindet sich genau dort.
Dein minimaler Arbeitsspeicher ist nicht 128MB, sondern 1024MB.
Dein PermGen ist 128MB groß. Sollte laut hier 4x der Default-Wert sein, aber vielleicht liegt es ja trotzdem daran.

@BlackHole könnte was zum PermGen beitragen, was es bewirkt, etc. Ich lese nur, dass der in Java 8 in einer Art und Weise geändert wurde. Das ist aber schon lange her und hat nichts mit der 1.18.2 zu tun. Desweiteren hast du Recht, dass man nichts ähnliches findet.


Der zweite Satz finde ich hier auch interessant und kann dir weiterhelfen:
[EDIT]
https://stackoverflow.com/a/3003986
Den minimalen Speicher hatte ich zwischenzeitlich mit ahnungsloser Testerei angehoben.

Mit den Java Argumenten aus dem verlinkten Beitrag bekomme ich das Spiel leider nicht gestartet.
Unrecognized VM option 'UseConcMarkSweepGC'

Error: Could not create the Java Virtual Machine.

Error: A fatal exception has occurred. Program will exit.


Ich habe die Werte mal etwas verändert und das Spiel einfach ca. 1 Stunde im Hintergrund laufen lassen.
Werte mit denen die Screenshots erstellt wurden:
Bildschirmfoto 2022-04-14 um 16.26.19.jpg


Minimaler Zustand nach einer Stunde: 33%
Bildschirmfoto 2022-04-14 um 16.21.49.jpg


Minimaler Zustand ca. 1-2 Minuten nach dem Start: 10%
Bildschirmfoto 2022-04-14 um 16.28.26.jpg


So wie auf dem Bild nach dem Start sah der minimale Wert bis vor 1.18.2 auch nach Stundenlangem spielen aus.

Geändert hat sich durch die neuen Werte nichts. Evtl. habe ich auch einfach was falsch verstanden.
Meine bisherigen "Kenntnisse" sind auch nur durch rumtesten mit den Werten entstanden. :doofy:



Auch wenn es bisher noch nicht geholfen hat: Danke fürs mit überlegen @Quaeft


edit: Wenn ich länger durch die Welt laufe steigt der minimale Wert durchgehend an und geht nicht mehr runter.
Vermutung: Kann es sein, dass der Speicher sämtliche Chunks einfach zwischenspeichert und nicht mehr löscht?
Eigentlich müssten diese Chunks ja entladen werden mit dem gc (soweit ich das verstanden habe) und der min Wert dementsprechend wieder absinken.
Meine Sichtweite beträgt 9 Chunks, also nicht sonderlich viel.
 
Zuletzt bearbeitet:
Ich würde empfehlen, den Launcher von Minecraft zu verwenden. Dieser setzt verschiedene JVM-Argumente, die auf Java 17 optimiert sind. Dort würde ich empfehlen, min. 2 GB bei maximalem Heap einzustellen. Die entsprechenden Argumente wären:
-Xmx2G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M

Minecraft 1.18.2 hat einige Bibliotheken aktualisiert. Möglicherweise hat eine von diesen einen Speicherleck auf ARM-Systemen.

Versuche auch mal die UW-Spielereinstellung "use_client_view_distance" zu deaktvieren.
 
Ich würde empfehlen, den Launcher von Minecraft zu verwenden. Dieser setzt verschiedene JVM-Argumente, die auf Java 17 optimiert sind.
Mit dem Minecraft Launcher komme ich auf maximal 20 fps, daher ist das leider keine Alternativ für mich.
Ich teste den Rest später mal, an die View Distance hatte ich auch schon gedacht aber noch nicht getestet. Danke dir.

edit:
Nochmal fleißig getestet, die Werte bringen leider keine Besserung.
Mit dem Minecraft Launcher ist das Problem tatsächlich weg.
Allerdings macht das mit dem Geruckel absolut keinen Spaß und die Kiste wird nach einer Weile so heiß, dass automatisch die Leistung gedrosselt wird und die FPS auf maximal 5 sinken. :doofy:

Du wirst vermutlich recht haben mit dem Speicherleck, anders kann ich es mir nicht erklären.
Dann muss ich erstmal damit leben, den Wert im Auge behalten, ggf. kurz neu starten und auf einen Bugfix hoffen.

Danke für eure Hilfe @Quaeft & @BlackHole :)
 
Zuletzt bearbeitet:
  • Gefällt mir
Wertungen: SoundSelection
Kanns ja nicht lassen und suche weiter, anscheinend erfolgreich.

In einem reddit Post wurden weitere GC´s angesprochen.
Ich habe beide getestet, mit dem Shenandoah verhält sich die Anzeige anders. Der min Wert bleibt aber bei 300, auch nach 3 Stunden Spielzeit.
Diese Werte funktionieren trotz Rückgang auf einen Wert von nur -xmx1024m einwandfrei:
-XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC --illegal-access=permit

Vielleicht hilfts ja noch anderen. :)
 
Das "--illegal-access=permit" hat bei Java 17 allerdings keine Wirkung mehr.
Für Minecraft 1.18.2 werden trotzdem 2 GB empfohlen. Bei tieferen Welten (also derzeit auf der Farmwelt) ist der RAM-Bedarf höher.
 

Benutzer, die dieses Thema gerade lesen

ONLINE 13 Spieler