▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Моды/Jasione
Jasione

Jasione

Jasione - оптимизационный мод для Майнкрафт, который снижает нагрузку на сборщик мусора (GC) за счет устранения клонирования массивов enum-значений. Меньше лагов, плавнее FPS.

Оцените первым
55.5K
49

Jasione

Что это и зачем нужно

Jasione - это небольшой, но очень полезный оптимизационный мод для Майнкрафт, который решает одну конкретную проблему производительности: снижает нагрузку на сборщик мусора (GC).

В Java каждый enum-класс генерирует метод values(), который возвращает массив всех значений. Проблема в том, что этот массив каждый раз клонируется перед возвратом - чтобы один вызывающий код мог безопасно менять массив, не влияя на других. В горячих участках кода (hot paths) эти мелкие аллокации памяти накапливаются и создают лишнюю работу для GC. В Майнкрафте, где enum'ы используются повсеместно (например, Direction, BlockState), это может приводить к микро-лагам и просадкам FPS.

Jasione решает эту проблему хитро: он анализирует байткод и определяет, какие вызовы values() не мутируют возвращаемый массив. Для таких вызовов он подставляет кешированную версию массива, полностью устраняя клонирование и аллокацию памяти. Безопасность гарантируется анализом на уровне байткода - если мод видит, что массив может быть изменен или "убегает" за пределы метода, он оставляет оригинальный вызов как есть.

Настройка

Конфиг лежит в config/jasione.toml. По умолчанию мод включен и работает "из коробки". Есть пара отладочных опций:

# Включает/выключает мод
enabled = true

[debug]
    # Логирует статистику при оптимизации
    printOptimization = false
    # Сохраняет трансформированные классы в папку ".jasione.out"
    dumpClasses = false

Если хочешь посмотреть, сколько enum-вызовов было оптимизировано - включи printOptimization. Для обычной игры это не нужно.

Важно знать

Почему JIT-компилятор сам это не оптимизирует?

Хороший вопрос. По тестам JMH, даже самые тривиальные паттерны использования (например, обычный цикл по массиву) не распознаются JIT'ом. Клонирование и аллокация остаются. Jasione делает то, что JIT не умеет.

NeoForge ругается на мод. Это нормально?

Да. На NeoForge 1.21.11+ может появиться предупреждение:

[Render thread/ERROR] [ne.ne.fm.cl.tr.ClassTransformStatistics/]: Class processor jasione:main transformed 100.00% of loaded class which is suspiciously high; it may be attempting mass-ASM.

Это не ошибка. NeoForge просто проверяет, не пытается ли мод делать массовые ASM-трансформации без необходимости. Для Jasione это необходимо - он должен анализировать все enum-классы. Разработчики NeoForge в курсе, обсуждение было на их Discord-сервере.

Как это работает (технически)

Контракт Enum#values гласит: возвращаемый массив свежий и его можно свободно мутировать. Поэтому Jasione должен быть уверен, что оптимизация безопасна. Он использует библиотеку asm-analysis для анализа байткода каждого вызывающего метода.

Если анализ показывает, что массив не мутируется и не "убегает" за пределы метода - вызов перенаправляется на кеш. Сам кеш хранится в специально сгенерированном классе-держателе для каждого enum'а. Например, для net.minecraft.core.Direction генерируется класс me.decce.jasione.cached.net.minecraft.core.Direction, который хранит статическое финальное поле с кешированным массивом.

Итог

Jasione - это must-have для тех, кто хочет выжать максимум производительности из Майнкрафта, особенно на слабых машинах или серверах с большим онлайном. Мод не меняет геймплей, не добавляет контент - он просто делает игру плавнее за счет оптимизации того, что обычно остается за кадром.

Скачайте Jasione и забудьте о микро-лагах от сборщика мусора.

Партнёрский материал

Как поиграть с друзьями с модом Jasione?

Мод Jasione куда интереснее в компании: поднимите сервер Майнкрафт с уже установленным модом, позовите друзей и играйте по своим правилам. Хостинг Майнкрафт для мода Jasione будет готов за пару минут - BungeeHost сделает всё за вас.

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

26.2.x26.1.x1.21.x1.20.x1.19.x1.18.x

Платформы

Поддерживаемые окружения

Клиент и сервер

Ссылки

Создатели

Детали

Лицензия:
Опубликован:2 месяца назад
Обновлён:2 недели назад
Главная