mirror of
https://github.com/PaperMC/Paper.git
synced 2025-02-17 18:47:40 +01:00
MC-183249: Don't generate Carving Masks BitSet unless needed
This was using SIGNIFICANT amounts of memory allocating many long[]'s for BitSets for every ProtoChunk in the cache that had been unloaded and reloaded. This will result in a nice memory reduction.
This commit is contained in:
parent
e9fcee1190
commit
d816beaced
1 changed files with 43 additions and 0 deletions
|
@ -0,0 +1,43 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sat, 9 May 2020 12:11:47 -0400
|
||||
Subject: [PATCH] MC-183249: Don't generate Carving Masks BitSet unless needed
|
||||
|
||||
This was using SIGNIFICANT amounts of memory allocating many
|
||||
long[]'s for BitSets for every ProtoChunk in the cache that had
|
||||
been unloaded and reloaded.
|
||||
|
||||
This will result in a nice memory reduction.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
||||
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
||||
@@ -0,0 +0,0 @@ public class ChunkRegionLoader {
|
||||
for (int l = 0; l < k; ++l) {
|
||||
WorldGenStage.Features worldgenstage_features = aworldgenstage_features[l];
|
||||
|
||||
- nbttagcompound3.setByteArray(worldgenstage_features.toString(), ichunkaccess.a(worldgenstage_features).toByteArray());
|
||||
+ // Paper start - don't create carving mask bitsets if not even at that chunk status yet
|
||||
+ BitSet mask = protochunk.getCarvingMaskIfSet(worldgenstage_features);
|
||||
+ if (mask != null) {
|
||||
+ nbttagcompound3.setByteArray(worldgenstage_features.toString(), mask.toByteArray());
|
||||
+ }
|
||||
+ // Paper end
|
||||
}
|
||||
|
||||
nbttagcompound1.set("CarvingMasks", nbttagcompound3);
|
||||
diff --git a/src/main/java/net/minecraft/server/ProtoChunk.java b/src/main/java/net/minecraft/server/ProtoChunk.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/ProtoChunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/ProtoChunk.java
|
||||
@@ -0,0 +0,0 @@ public class ProtoChunk implements IChunkAccess {
|
||||
private final ProtoChunkTickList<Block> q;
|
||||
private final ProtoChunkTickList<FluidType> r;
|
||||
private long s;
|
||||
- private final Map<WorldGenStage.Features, BitSet> t;
|
||||
+ private final Map<WorldGenStage.Features, BitSet> t;public BitSet getCarvingMaskIfSet(WorldGenStage.Features worldgenstage_features) { return this.t.get(worldgenstage_features); } // Paper
|
||||
+ // Paper end
|
||||
private volatile boolean u;
|
||||
private final World world; // Paper - Anti-Xray - Add world
|
||||
|
Loading…
Add table
Reference in a new issue