diff --git a/api/src/main/java/com/seibel/distanthorizons/coreapi/DependencyInjection/DependencyInjector.java b/api/src/main/java/com/seibel/distanthorizons/coreapi/DependencyInjection/DependencyInjector.java index 8a286c592..a6a3bea2b 100644 --- a/api/src/main/java/com/seibel/distanthorizons/coreapi/DependencyInjection/DependencyInjector.java +++ b/api/src/main/java/com/seibel/distanthorizons/coreapi/DependencyInjection/DependencyInjector.java @@ -35,6 +35,18 @@ import java.util.Map; */ public class DependencyInjector implements IDependencyInjector // Note to self: Don't try adding a generic type to IDhApiEvent, the constructor won't accept it { + /** + * empty list is to reduce GC pressure slightly in the common path + * that {@link DependencyInjector#getInternalLogic(Class, boolean)} is called + * when nothing has been bound. + */ + private static final ArrayList EMPTY_GET_ALL_LIST = new ArrayList<>(); + static + { + EMPTY_GET_ALL_LIST.add(null); + } + + protected final HashMap, ArrayList> dependencies = new HashMap<>(); /** Internal class reference to BindableType since we can't get it any other way. */ @@ -246,9 +258,7 @@ public class DependencyInjector implements IDepe // return an empty list to prevent null pointers - ArrayList emptyList = new ArrayList(); - emptyList.add(null); - return emptyList; + return (ArrayList)EMPTY_GET_ALL_LIST; } //endregion