From 06de824b72348c44c8a8fc52b97c2a24999f7a31 Mon Sep 17 00:00:00 2001 From: contaria Date: Tue, 12 Nov 2024 12:09:05 +0100 Subject: [PATCH] optimization: set capacity of vanilla visibleChunks list to 0 Vanilla initializes its visibleChunks list with a capacity of 69696, with SeedQueues WorldRenderers for the wall screen that can add up to multiple megabytes of completely unused memory --- .../mixin/features/chunk_rendering/MixinWorldRenderer.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/me/jellysquid/mods/sodium/mixin/features/chunk_rendering/MixinWorldRenderer.java b/src/main/java/me/jellysquid/mods/sodium/mixin/features/chunk_rendering/MixinWorldRenderer.java index faff41a27..3fcb91eca 100644 --- a/src/main/java/me/jellysquid/mods/sodium/mixin/features/chunk_rendering/MixinWorldRenderer.java +++ b/src/main/java/me/jellysquid/mods/sodium/mixin/features/chunk_rendering/MixinWorldRenderer.java @@ -17,6 +17,7 @@ import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -39,6 +40,12 @@ public SodiumWorldRenderer getSodiumWorldRenderer() { return renderer; } + @ModifyArg(method = "", at = @At(value = "INVOKE", target = "Lit/unimi/dsi/fastutil/objects/ObjectArrayList;(I)V")) + private int nullifyVisibleChunksList(int capacity) { + // Sodium doesn't use this list, so we prevent the initial capacity of 69696 to be allocated + return 0; + } + @Redirect(method = "reload", at = @At(value = "FIELD", target = "Lnet/minecraft/client/options/GameOptions;viewDistance:I", ordinal = 1)) private int nullifyBuiltChunkStorage(GameOptions options) { // Do not allow any resources to be allocated