mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-23 17:37:45 +01:00
7ae47d4eb3
Mojang fixed it in MC-63720
31 lines
1.5 KiB
Diff
31 lines
1.5 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Mon, 4 May 2020 01:08:56 -0400
|
|
Subject: [PATCH] Set cap on JDK per-thread native byte buffer cache
|
|
|
|
See: https://www.evanjones.ca/java-bytebuffer-leak.html
|
|
|
|
This is potentially a source of lots of native memory usage.
|
|
|
|
We are clearly seeing native usage upwards to 1-4GB which doesn't make sense.
|
|
|
|
Region File usage fixed in previous patch should of tecnically only been somewhat
|
|
temporary until GC finally gets it some time later, but between all the various
|
|
plugins doing IO on various threads, this hidden detail of the JDK could be
|
|
keeping long lived large direct buffers in cache.
|
|
|
|
Set system properly at server startup if not set already to help protect from this.
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
|
|
index b9e14473ed7e1e07f14246f06ef4070a90f03f3f..9118f054246ea09a4ca7b326604679d6c9addde4 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
|
|
@@ -20,6 +20,7 @@ public class Main {
|
|
|
|
public static void main(String[] args) {
|
|
// Todo: Installation script
|
|
+ if (System.getProperty("jdk.nio.maxCachedBufferSize") == null) System.setProperty("jdk.nio.maxCachedBufferSize", "262144"); // Paper - cap per-thread NIO cache size
|
|
OptionParser parser = new OptionParser() {
|
|
{
|
|
acceptsAll(asList("?", "help"), "Show the help");
|