ENG:
Describe the bug
I am experiencing a severe memory leak related to the Map Captcha functionality.
Map packet objects (net.elytrium.limboapi.api.protocol.packets.data.MapData and MapDataPacket) are accumulating in the Heap memory and are not being Garbage Collected after players leave or pass the check.
With only 15 player joins, the Heap Dump shows ~133,000 instances of map-related objects. This consumes hundreds of megabytes of RAM (mostly in byte[] arrays for pixel data) and leads to eventual OutOfMemory errors.
To Reproduce
Steps to reproduce the behavior:
- Set
check-state in config to CAPTCHA_POSITION (or ONLY_CAPTCHA).
- Ensure Map Captcha is enabled in
captcha-generator.
- Start the proxy and have players join and leave repeatedly (e.g., 10-20 times).
- Take a Heap Dump, spark, velocity heapdump.
- See massive accumulation of
MapData objects that are not cleared.
Expected behavior
Map data objects should be garbage collected after the packet is sent to the player, or at least after the player session ends (disconnect). The memory usage should not grow indefinitely with every join.
Screenshots

Server Info (please complete the following information):
- All Limbo plugins versions:
- LimboFilter: Latest
- LimboAPI: Latest
- Velocity: Latest
Additional context
Heap Dump Analysis shows the top memory consumers are:
net.elytrium.limboapi.api.protocol.packets.data.MapData (~133k instances)
net.elytrium.limboapi.protocol.packets.s2c.MapDataPacket (~133k instances)
byte[] (pixel data)
I have tried the following mitigations, but the leak persists:
- Enabled
prepare-captcha-packets: true.
- Disabled all animations (
font-ripple, font-rotate, font-outline set to false).
- Reduced
images-count from 1000 to 50.
- Changed
check-state to ONLY_CAPTCHA.
Despite these configuration changes, the objects continue to accumulate. It seems references to these packets are retained indefinitely.
RUS:
Описание бага
Я столкнулся с критической утечкой памяти, связанной с функционалом Map Captcha (капча на картах).
Объекты пакетов карт (net.elytrium.limboapi.api.protocol.packets.data.MapData и MapDataPacket) накапливаются в Heap-памяти и не очищаются сборщиком мусора (GC) после выхода игроков или прохождения проверки.
Всего за 15 заходов игроков дамп памяти (Heap Dump) показывает ~133,000 экземпляров объектов, связанных с картами. Это потребляет сотни мегабайт ОЗУ (в основном в массивах byte[] для пиксельных данных) и в конечном итоге приводит к ошибке OutOfMemory.
Как воспроизвести
Шаги для воспроизведения поведения:
- Установить параметр
check-state в конфиге на CAPTCHA_POSITION (или ONLY_CAPTCHA).
- Убедиться, что Map Captcha включена в секции
captcha-generator.
- Запустить прокси и перезаходить на сервер несколько раз (например, 10-20 раз).
- Сделать дамп памяти (Heap Dump), spark, velocity heapdump.
- Наблюдать огромное накопление объектов
MapData, которые не очищаются.
Ожидаемое поведение
Объекты данных карт должны удаляться сборщиком мусора после отправки пакета игроку или, как минимум, после закрытия сессии игрока (дисконнекта). Потребление памяти не должно расти бесконечно с каждым заходом.
Скриншоты

Информация о сервере:
- Версии плагинов Limbo:
- LimboFilter: Latest (Последняя)
- LimboAPI: Latest (Последняя)
- Velocity: Latest (Последняя)
Дополнительный контекст
Анализ Heap Dump показывает основных потребителей памяти:
net.elytrium.limboapi.api.protocol.packets.data.MapData (~133 тыс. экземпляров)
net.elytrium.limboapi.protocol.packets.s2c.MapDataPacket (~133 тыс. экземпляров)
byte[] (данные пикселей)
Я пробовал следующие меры для смягчения проблемы, но утечка сохраняется:
- Включил
prepare-captcha-packets: true.
- Отключил все анимации (
font-ripple, font-rotate, font-outline установлены в false).
- Уменьшил
images-count с 1000 до 50.
- Изменил
check-state на ONLY_CAPTCHA.
Несмотря на эти изменения конфигурации, объекты продолжают накапливаться. Похоже, ссылки на эти пакеты удерживаются бесконечно внутри плагина.
ENG:
Describe the bug
I am experiencing a severe memory leak related to the Map Captcha functionality.
Map packet objects (
net.elytrium.limboapi.api.protocol.packets.data.MapDataandMapDataPacket) are accumulating in the Heap memory and are not being Garbage Collected after players leave or pass the check.With only 15 player joins, the Heap Dump shows ~133,000 instances of map-related objects. This consumes hundreds of megabytes of RAM (mostly in
byte[]arrays for pixel data) and leads to eventual OutOfMemory errors.To Reproduce
Steps to reproduce the behavior:
check-statein config toCAPTCHA_POSITION(orONLY_CAPTCHA).captcha-generator.MapDataobjects that are not cleared.Expected behavior
Map data objects should be garbage collected after the packet is sent to the player, or at least after the player session ends (disconnect). The memory usage should not grow indefinitely with every join.
Screenshots

Server Info (please complete the following information):
Additional context
Heap Dump Analysis shows the top memory consumers are:
net.elytrium.limboapi.api.protocol.packets.data.MapData(~133k instances)net.elytrium.limboapi.protocol.packets.s2c.MapDataPacket(~133k instances)byte[](pixel data)I have tried the following mitigations, but the leak persists:
prepare-captcha-packets: true.font-ripple,font-rotate,font-outlineset tofalse).images-countfrom 1000 to 50.check-statetoONLY_CAPTCHA.Despite these configuration changes, the objects continue to accumulate. It seems references to these packets are retained indefinitely.
RUS:
Описание бага
Я столкнулся с критической утечкой памяти, связанной с функционалом Map Captcha (капча на картах).
Объекты пакетов карт (
net.elytrium.limboapi.api.protocol.packets.data.MapDataиMapDataPacket) накапливаются в Heap-памяти и не очищаются сборщиком мусора (GC) после выхода игроков или прохождения проверки.Всего за 15 заходов игроков дамп памяти (Heap Dump) показывает ~133,000 экземпляров объектов, связанных с картами. Это потребляет сотни мегабайт ОЗУ (в основном в массивах
byte[]для пиксельных данных) и в конечном итоге приводит к ошибке OutOfMemory.Как воспроизвести
Шаги для воспроизведения поведения:
check-stateв конфиге наCAPTCHA_POSITION(илиONLY_CAPTCHA).captcha-generator.MapData, которые не очищаются.Ожидаемое поведение
Объекты данных карт должны удаляться сборщиком мусора после отправки пакета игроку или, как минимум, после закрытия сессии игрока (дисконнекта). Потребление памяти не должно расти бесконечно с каждым заходом.
Скриншоты

Информация о сервере:
Дополнительный контекст
Анализ Heap Dump показывает основных потребителей памяти:
net.elytrium.limboapi.api.protocol.packets.data.MapData(~133 тыс. экземпляров)net.elytrium.limboapi.protocol.packets.s2c.MapDataPacket(~133 тыс. экземпляров)byte[](данные пикселей)Я пробовал следующие меры для смягчения проблемы, но утечка сохраняется:
prepare-captcha-packets: true.font-ripple,font-rotate,font-outlineустановлены вfalse).images-countс 1000 до 50.check-stateнаONLY_CAPTCHA.Несмотря на эти изменения конфигурации, объекты продолжают накапливаться. Похоже, ссылки на эти пакеты удерживаются бесконечно внутри плагина.