From 5d94a3178457ec240030fc3162e7c2a6f4d41c6c Mon Sep 17 00:00:00 2001 From: shedaniel Date: Mon, 7 Sep 2020 22:08:32 +0800 Subject: Improve memory usage Signed-off-by: shedaniel --- .../java/me/shedaniel/rei/impl/AbstractEntryStack.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java') diff --git a/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java b/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java index 53f1e79a6..91907294d 100644 --- a/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java +++ b/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java @@ -23,7 +23,7 @@ package me.shedaniel.rei.impl; -import it.unimi.dsi.fastutil.objects.Reference2ObjectMap; +import it.unimi.dsi.fastutil.objects.Reference2ObjectMaps; import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap; import me.shedaniel.rei.api.EntryStack; import net.minecraft.client.gui.GuiComponent; @@ -33,33 +33,38 @@ import java.util.Map; @ApiStatus.Internal public abstract class AbstractEntryStack extends GuiComponent implements EntryStack { - private Reference2ObjectMap, Object> settings = new Reference2ObjectOpenHashMap<>(); + private static final Map, Object> EMPTY_SETTINGS = Reference2ObjectMaps.emptyMap(); + private Map, Object> settings = null; @Override public EntryStack setting(Settings settings, T value) { + if (this.settings == null) + this.settings = new Reference2ObjectOpenHashMap<>(4); this.settings.put(settings, value); return this; } @Override public EntryStack removeSetting(Settings settings) { - this.settings.remove(settings); + if (this.settings != null && this.settings.remove(settings) != null && this.settings.isEmpty()) { + this.settings = null; + } return this; } @Override public EntryStack clearSettings() { - this.settings.clear(); + this.settings = null; return this; } protected Map, Object> getSettings() { - return settings; + return this.settings == null ? EMPTY_SETTINGS : this.settings; } @Override public T get(Settings settings) { - Object o = this.settings.get(settings); + Object o = this.settings == null ? null : this.settings.get(settings); if (o == null) return settings.getDefaultValue(); return (T) o; -- cgit