From e2f93c6ac60cba3de01d5c50af0d651ac070671f Mon Sep 17 00:00:00 2001 From: Andrew Steinborn Date: Sat, 19 Jan 2019 02:48:11 -0500 Subject: [PATCH] Set Netty pooled buffer size to 2MiB --- .../main/java/com/velocitypowered/proxy/Velocity.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/proxy/src/main/java/com/velocitypowered/proxy/Velocity.java b/proxy/src/main/java/com/velocitypowered/proxy/Velocity.java index 7c374605b..6f3da9ddc 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/Velocity.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/Velocity.java @@ -12,6 +12,17 @@ public class Velocity { // We use BufferedImage for favicons, and on macOS this puts the Java application in the dock. // How inconvenient. Force AWT to work with its head chopped off. System.setProperty("java.awt.headless", "true"); + + // By default, Netty allocates 16MiB arenas for the PooledByteBufAllocator. This is too much + // memory for Minecraft, which imposes a maximum packet size of 2MiB! We'll use 2MiB as a more + // sane default. + // + // Note: io.netty.allocator.pageSize << io.netty.allocator.maxOrder is the formula used to + // compute the chunk size. We lower maxOrder from its default of 11 to 8. (We also use a null + // check, so that the user is free to choose another setting if need be.) + if (System.getProperty("io.netty.allocator.maxOrder") == null) { + System.setProperty("io.netty.allocator.maxOrder", "8"); + } } /**