Что такое permgen в minecraft

В PermGen виртуальная машина хранит метаданные загруженных классов. Также здесь находятся всё статическое содержимое приложения, переменные примитивных типов и ссылки на статические объекты.

Более того PermGen хранит данные о байткоде и JIT информацию. До Java 7 пул строк также являлся частью PermGen.

По умолчанию, максимальный размер этой области памяти для 32-х битной JVM равен 64 Мб, а для 64-х битной версии – 82 Мб. Однако, вы можете изменять эти значения, используя следующие параметры JVM:

    -XX:PermSize=[размер] для установки минимального размера PermGen области

-XX:MaxPermSize=[размер] для установки максимального размера

Из-за своего ограниченного размера, PermGen является причиной возникновения ошибки java.lang.OutOfMemoryError: PermGen space. Проще говоря, загрузчики классов не обрабатываются сборщиком мусора должным образом, в результате чего появляются утечки памяти. Чаще всего это происходит при создании новых загрузчиков.

Эта область памяти была полностью удалена в JDK 8.

По умолчанию, Metaspace увеличивается автоматически. Однако и здесь у нас есть возможность управления памятью:

    При помощи MetaspaceSize и MaxMetaspaceSize можно задать границы Metaspace области

MinMetaspaceFreeRatio – минимальный зарезервированный размер памяти для метаданных классов после сборки мусора. Выражается в процентах от общего размера Metaspace области

  • MaxMetaspaceFreeRatio – максимальный зарезервированный размер памяти для метаданных классов после сборки мусора. Используется для предотвращения сокращения объема пространства, заполнение которого вызывает сборку мусора. Также выражается в процентах от общего размера Metaspace
  • В результате появления Metaspace, процесс очистки памяти получил некоторые преимущества. Теперь сборщик мусора автоматически удаляет из памяти ненужные классы, когда емкость, выделенная для хранения метаданных, достигает максимального значения. Вместе с этим, уменьшилась вероятность получения ошибки OutOfMemoryError.

    Несмотря на все плюсы, нам все равно необходимо контролировать и, при необходимости, настраивать Metaspace чтобы избежать утечек памяти.

    I have a FTB Unleashed 1.1.7 server running and I have been getting the following error as of lately «java.lang.OutOfMemoryError: PermGen space».

    -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled along with setting the MaxPermSize -XX:MaxPermSize=128M .

    What is the ideal MaxPermSize? Will increasing the MaxPermSize (256mb, 512mb) degrade performance?

    While I do agree to some point with the existing answers, increasing to -XX:MaxPermSize=512M will help and even up to -XX:MaxPermSize=1G should not hurt, assuming your server has that amount of physical RAM, a word of advice regarding the total heap size, which is configured by increasing -Xmx=xGB .

    In general this will increase the available memory for the program, which is good, since the JVM (Java Virtual Machine, essentially the program running your minecraft server) will have more memory to put ‘stuff’ into. At a certain point, there will however be a great drawback. As you go into the 10s of gigabytes, the JVM becomes more and more inefficient to handle this much memory without advice.

    As more and more memory is needed, you need to tell the JVM what exactly the memory is primarily used for (this depends weather your java objects are rather short- or long-lived). I am not sure regarding how Minecraft handles this memory, as I come from another java field (J2EE), but the bigger the total RAM, the more likely you need to tune your server to the specific requirement for the application.

    Specifically you will need to tune the garbage collector to rather have minimal stop-the-world pauses (basically where your server completely stands still and seemingly does nothing). Using -XX:+UseConcMarkSweepGC will help that a lot. Using -XX:CMSClassUnloadingEnabled will only help to keep your PermGen ( -XX:MaxPermSize ) clean but not keeping your overall heap clean. For the former case, there are literally dozens of settings that need to be considered.

    For a very big server there is a lot more to tune than just the -XX:MaxPermSize . A PermSize of around -XX:MaxPermSize=1G and a heap around -Xmx=4G to -Xmx=6G should still be fairly safe. I would not go much beyond this to keep server performance.

    Of course the MaxPermSize + Xmx should never be higher than the RAM installed in your computer. It will start swapping which will reduce performance by some magnitudes.

    Российский сервер minecraft GregTech

    Собираю клиент на базе TLauncher
    Скачиваю версию 1.7.10.
    Скачиваю и кидаю в папку с игрой Конфигурация и моды
    Скачиваю и устанавливаю forge 10.13.1.1232
    Запускаю установленную версию Forge
    Ввожу пароль. Пароль верный!
    Получаю это:

    Что я делаю не так =_=

    Не долго я побегал

    [18:33:14] [Netty Client IO #1/ERROR] [FML]: NetworkDispatcher exception
    java.lang.OutOfMemoryError: PermGen space
    [L] Launcher exited.
    [L] Minecraft closed with exit code: -805306369
    [Crash] Signature «PermGen error» matches!
    [Crash] Crash has been recognized!

    1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
    Загрузка...
    Adblock
    detector