From 50a7f31098499fc8ed698f88a6f1e6ba69de2753 Mon Sep 17 00:00:00 2001 From: Phoenix-Starlight Date: Wed, 30 Aug 2023 17:20:25 -0700 Subject: [PATCH 1/2] Fix ModelManager memory leak --- .../mixin/perf/dynamic_resources/ModelManagerMixin.java | 9 +++++---- .../mixin/perf/dynamic_resources/ModelManagerMixin.java | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelManagerMixin.java b/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelManagerMixin.java index ce620eeda..62179e160 100644 --- a/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelManagerMixin.java +++ b/fabric/src/main/java/org/embeddedt/modernfix/fabric/mixin/perf/dynamic_resources/ModelManagerMixin.java @@ -16,6 +16,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; +import java.io.BufferedReader; import java.io.IOException; import java.util.List; import java.util.Map; @@ -43,8 +44,8 @@ private ImmutableList skipCollection(StateDefinition { - try { - return BlockModel.fromStream(resource.openAsReader()); + try (BufferedReader reader = resource.openAsReader()) { + return BlockModel.fromStream(reader); } catch(IOException e) { ModernFix.LOGGER.error("Couldn't load model", e); return null; @@ -54,8 +55,8 @@ private BlockModel loadSingleBlockModel(ResourceManager manager, ResourceLocatio private List loadSingleBlockState(ResourceManager manager, ResourceLocation location) { return manager.getResourceStack(location).stream().map(resource -> { - try { - return new ModelBakery.LoadedJson(resource.sourcePackId(), GsonHelper.parse(resource.openAsReader())); + try (BufferedReader reader = resource.openAsReader()) { + return new ModelBakery.LoadedJson(resource.sourcePackId(), GsonHelper.parse(reader)); } catch(IOException e) { ModernFix.LOGGER.error("Couldn't load blockstate", e); return null; diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelManagerMixin.java b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelManagerMixin.java index 4e7cbfd37..6e9514c6d 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelManagerMixin.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelManagerMixin.java @@ -16,6 +16,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; +import java.io.BufferedReader; import java.io.IOException; import java.util.*; import java.util.concurrent.CompletableFuture; @@ -41,8 +42,8 @@ private ImmutableList skipCollection(StateDefinition { - try { - return BlockModel.fromStream(resource.openAsReader()); + try (BufferedReader reader = resource.openAsReader()) { + return BlockModel.fromStream(reader); } catch(IOException e) { ModernFix.LOGGER.error("Couldn't load model", e); return null; @@ -52,8 +53,8 @@ private BlockModel loadSingleBlockModel(ResourceManager manager, ResourceLocatio private List loadSingleBlockState(ResourceManager manager, ResourceLocation location) { return manager.getResourceStack(location).stream().map(resource -> { - try { - return new ModelBakery.LoadedJson(resource.sourcePackId(), GsonHelper.parse(resource.openAsReader())); + try (BufferedReader reader = resource.openAsReader()) { + return new ModelBakery.LoadedJson(resource.sourcePackId(), GsonHelper.parse(reader)); } catch(IOException e) { ModernFix.LOGGER.error("Couldn't load blockstate", e); return null; From f466384b2907491225dfb8adb1459b8eb5a8b761 Mon Sep 17 00:00:00 2001 From: Phoenix-Starlight Date: Wed, 30 Aug 2023 17:57:05 -0700 Subject: [PATCH 2/2] Remove wildcard import --- .../forge/mixin/perf/dynamic_resources/ModelManagerMixin.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelManagerMixin.java b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelManagerMixin.java index 6e9514c6d..98066097b 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelManagerMixin.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/dynamic_resources/ModelManagerMixin.java @@ -18,7 +18,9 @@ import java.io.BufferedReader; import java.io.IOException; -import java.util.*; +import java.util.List; +import java.util.Map; +import java.util.Objects; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; import java.util.stream.Collectors;