Что такое io.netty.allocator.maxOrder в Netty?

Объясните, пожалуйста, что такое io.netty.allocator.maxOrder в Netty!

По умолчанию это значение равно 11, поэтому я получаю 8192 << 11 = 16 МБ на фрагмент. Для 2 ядер на Java 11 я получаю 4 прямые арены с 6 DirectByteBuffers на каждой (у меня есть дамп памяти). Итак, 16Mib x 4 арены x 6 буферов = 384Mib.

В моем приложении есть транспортный сервер на основе netty с сотнями клиентских подключений, отправляющих множество небольших сообщений (несколько килобайт на каждое сообщение). Но также мое приложение использует прямую память для собственных нужд. Так что лишний 384Mib для меня обходится слишком дорого.

Пожалуйста, посоветуйте, можно ли уменьшить io.netty.allocator.maxOrder до значения 8 без какого-либо снижения производительности netty?

1 ответ

Что вы можете. Просто используйте профилировщик, чтобы понять эффект здесь. Эти числа были использованы на основе статьи / блога jemalloc на момент написания реализации.

Другие вопросы по тегам