Przejdź do treści

Błąd: OutOfMemoryError — brak pamięci

Serwer Minecraft wyczerpał przydzielony RAM — jak rozpoznać wyciek pamięci, zmniejszyć zużycie i dobrać pakiet.

java.lang.OutOfMemoryError: Java heap space oznacza, że serwer poprosił o więcej pamięci, niż ma do dyspozycji, i został zatrzymany. Przyczyny są dwie: za mały pakiet do tego, co serwer robi, albo wyciek pamięci w dodatku. Rozróżnisz je po kształcie wykresu Pamięć w zakładce Konsola.

#Czego potrzebujesz

#Krok 1: Odczytaj wykres pamięci

Pod konsolą znajdziesz wykres Zużycie zasobów z sekcją Pamięć.

Kształt wykresu Diagnoza
Piła: rośnie, spada po odśmiecaniu, znowu rośnie Normalna praca
Stały poziom przy limicie, płaska linia Za mały pakiet do obciążenia
Liniowy wzrost aż do padu, bez spadków Wyciek pamięci w dodatku
Skok w górę w konkretnym momencie Zdarzenie: pregeneracja, wczytanie dużej struktury, farma mobów

Wyciek pamięci poznasz po tym, że serwer działa poprawnie po restarcie i pada dopiero po kilku godzinach — zawsze po podobnym czasie. Za mały pakiet objawia się natychmiast pod obciążeniem.

#Krok 2: Zmniejsz zużycie pamięci

Kolejność od największego zysku:

  1. Usuń nieużywane dodatki. Każdy plugin i mod zajmuje pamięć nawet wtedy, gdy nikt z niego nie korzysta.
  2. Obniż zasięgi. W zakładce KonfiguracjaSieć i wydajność ustaw Zasięg widoku na 6–8 i Zasięg symulacji na 4–6. To najprostsza zmiana o dużym wpływie.
  3. Ogranicz limit graczy. Panel ostrzega: „Wysoka liczba graczy może wpłynąć na wydajność".
  4. Ogranicz świat. Maksymalny rozmiar świata zmniejsza liczbę chunków, jakie serwer może wygenerować i trzymać.
  5. Wyłącz ciężkie dodatki. Dynmap, BlueMap i pluginy z dużym cache potrafią zjeść setki megabajtów.

#Krok 3: Znajdź źródło wycieku

Zainstaluj plugin Spark i uruchom analizę pamięci:

spark heapsummary

Raport pokazuje, które klasy zajmują najwięcej pamięci — nazwa pakietu wskazuje dodatek. Profilowanie obciążenia:

spark profiler --timeout 300

Doraźnym obejściem jest automatyczny restart raz na dobę, ale to leczenie objawu — winowajcę trzeba znaleźć.

#Krok 4: Sprawdź, czy pakiet wystarcza

Orientacyjne zapotrzebowanie:

Rodzaj serwera Sensowne minimum RAM
Vanilla / Paper, do 10 graczy 2 GB
Paper z kilkoma pluginami, 10–30 graczy 4 GB
Rozbudowany serwer z ekonomią i mapą online 6–8 GB
Lekki modpack (do 100 modów) 6 GB
Duży modpack (200+ modów) 8–12 GB

Zapotrzebowanie rośnie z liczbą modów, nie z liczbą graczy. Modpack z 300 modami zje więcej pamięci przy jednym graczu niż czysty Paper przy trzydziestu.

Jeśli po ograniczeniu zasięgów i usunięciu zbędnych dodatków wykres Pamięć nadal stale dobija do limitu — potrzebujesz większego pakietu.

#Najczęstsze problemy

#Serwer pada codziennie o podobnej porze

Wyciek pamięci. Uruchom spark heapsummary tuż przed spodziewanym padem — wtedy widać, co urosło.

#OutOfMemoryError przy pregeneracji świata

Pregeneracja to najbardziej pamięciożerna operacja. Uruchamiaj ją przy pustym serwerze i mniejszymi partiami.

#Pamięć jest pełna, ale nikogo nie ma na serwerze

Wczytane chunki nie zwalniają się natychmiast. Jeśli poziom nie spada po kilkunastu minutach pustki, to wyciek.

#Serwer nie pada, ale strasznie muli

To osobny problem — patrz Lagi i optymalizacja.

#Log nie zawiera OutOfMemoryError, a serwer się wyłącza

Sprawdź latest.log w całości przyciskiem Pobierz. Przy nagłym zabiciu procesu wpis może być ostatnią, uciętą linią.

#Co dalej