From 05bb3dcfa4450e3856fc7bf2e44936995f753f0c Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Mon, 23 Jan 2012 20:02:47 +0400 Subject: [PATCH] using THashMap in order to save memory occupied by Map.Entry objects --- .../components/impl/ComponentManagerImpl.java | 10 ++++----- .../openapi/extensions/Extensions.java | 8 +++---- .../daemon/HighlightDisplayKey.java | 10 ++++----- .../ex/InspectionProfileImpl.java | 3 ++- .../ui/AbstractNavBarUI.java | 3 ++- .../util/indexing/FileBasedIndex.java | 21 ++++++++----------- .../vfs/newvfs/persistent/PersistentFS.java | 6 ++++-- 7 files changed, 31 insertions(+), 30 deletions(-) diff --git a/platform/core-impl/src/com/intellij/openapi/components/impl/ComponentManagerImpl.java b/platform/core-impl/src/com/intellij/openapi/components/impl/ComponentManagerImpl.java index 236ec3f4b68d..d0153c3796aa 100644 --- a/platform/core-impl/src/com/intellij/openapi/components/impl/ComponentManagerImpl.java +++ b/platform/core-impl/src/com/intellij/openapi/components/impl/ComponentManagerImpl.java @@ -31,10 +31,10 @@ import com.intellij.util.ArrayUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.ReflectionCache; import com.intellij.util.containers.ConcurrentHashMap; -import com.intellij.util.containers.HashMap; import com.intellij.util.messages.MessageBus; import com.intellij.util.messages.MessageBusFactory; import com.intellij.util.pico.IdeaPicoContainer; +import gnu.trove.THashMap; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -415,13 +415,13 @@ public abstract class ComponentManagerImpl extends UserDataHolderBase implements } protected class ComponentsRegistry { - private final Map myInterfaceToLockMap = new HashMap(); - private final Map myInterfaceToClassMap = new HashMap(); + private final Map myInterfaceToLockMap = new THashMap(); + private final Map myInterfaceToClassMap = new THashMap(); private final ArrayList myComponentInterfaces = new ArrayList(); // keeps order of component's registration - private final Map myNameToComponent = new HashMap(); + private final Map myNameToComponent = new THashMap(); private final List myComponentConfigs = new ArrayList(); private final List myImplementations = new ArrayList(); - private final Map myComponentClassToConfig = new java.util.HashMap(); + private final Map myComponentClassToConfig = new THashMap(); private boolean myClassesLoaded = false; private void loadClasses() { diff --git a/platform/extensions/src/com/intellij/openapi/extensions/Extensions.java b/platform/extensions/src/com/intellij/openapi/extensions/Extensions.java index 6f833f46e71c..04642acee638 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/Extensions.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/Extensions.java @@ -19,13 +19,13 @@ import com.intellij.openapi.Disposable; import com.intellij.openapi.extensions.impl.ExtensionsAreaImpl; import com.intellij.openapi.util.Disposer; import com.intellij.util.containers.MultiMap; +import gnu.trove.THashMap; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.TestOnly; import java.util.Collection; -import java.util.HashMap; import java.util.Map; public class Extensions { @@ -33,11 +33,11 @@ public class Extensions { public static final ExtensionPointName AREA_LISTENER_EXTENSION_POINT = new ExtensionPointName("com.intellij.arealistener"); - private static final Map ourAreaInstance2area = new HashMap(); + private static final Map ourAreaInstance2area = new THashMap(); private static ExtensionsAreaImpl ourRootArea = createRootArea(); private static final MultiMap ourAreaClass2instances = new MultiMap(); - private static final Map ourAreaInstance2class = new HashMap(); - private static final Map ourAreaClass2Configuration = new HashMap(); + private static final Map ourAreaInstance2class = new THashMap(); + private static final Map ourAreaClass2Configuration = new THashMap(); private static ExtensionsAreaImpl createRootArea() { ExtensionsAreaImpl rootArea = new ExtensionsAreaImpl(null, null, null, ourLogger); diff --git a/platform/lang-api/src/com/intellij/codeInsight/daemon/HighlightDisplayKey.java b/platform/lang-api/src/com/intellij/codeInsight/daemon/HighlightDisplayKey.java index 9f7d7212ce2c..c9cfba5680e1 100644 --- a/platform/lang-api/src/com/intellij/codeInsight/daemon/HighlightDisplayKey.java +++ b/platform/lang-api/src/com/intellij/codeInsight/daemon/HighlightDisplayKey.java @@ -17,7 +17,7 @@ package com.intellij.codeInsight.daemon; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Comparing; -import com.intellij.util.containers.HashMap; +import gnu.trove.THashMap; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -27,10 +27,10 @@ import java.util.Map; public class HighlightDisplayKey { private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.daemon.HighlightDisplayKey"); - private static final HashMap ourNameToKeyMap = new HashMap(); - private static final HashMap ourIdToKeyMap = new HashMap(); - private static final Map ourKeyToDisplayNameMap = new HashMap(); - private static final Map ourKeyToAlternativeIDMap = new HashMap(); + private static final Map ourNameToKeyMap = new THashMap(); + private static final Map ourIdToKeyMap = new THashMap(); + private static final Map ourKeyToDisplayNameMap = new THashMap(); + private static final Map ourKeyToAlternativeIDMap = new THashMap(); private final String myName; private final String myID; diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionProfileImpl.java b/platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionProfileImpl.java index 924fcea61047..85831fe32940 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionProfileImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionProfileImpl.java @@ -42,6 +42,7 @@ import com.intellij.profile.codeInspection.InspectionProfileManager; import com.intellij.profile.codeInspection.SeverityProvider; import com.intellij.psi.PsiElement; import com.intellij.psi.search.scope.packageSet.NamedScope; +import gnu.trove.THashMap; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; @@ -59,7 +60,7 @@ public class InspectionProfileImpl extends ProfileEx implements ModifiableModel, private static final Logger LOG = Logger.getInstance("#com.intellij.codeInspection.ex.InspectionProfileImpl"); @NonNls private static final String VALID_VERSION = "1.0"; - private Map myTools = new HashMap(); + private Map myTools = new THashMap(); private Map myDisplayLevelMap; private Map myDeinstalledInspectionsSettings = new TreeMap(); diff --git a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/AbstractNavBarUI.java b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/AbstractNavBarUI.java index 1d0e1ba07349..2961d4f1727b 100644 --- a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/AbstractNavBarUI.java +++ b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/AbstractNavBarUI.java @@ -23,6 +23,7 @@ import com.intellij.util.containers.HashMap; import com.intellij.util.ui.JBInsets; import com.intellij.util.ui.SameColor; import com.intellij.util.ui.UIUtil; +import gnu.trove.THashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -37,7 +38,7 @@ import java.util.Map; */ public abstract class AbstractNavBarUI implements NavBarUI { - private Map> myCache = new HashMap>(); + private Map> myCache = new THashMap>(); private enum ImageType { INACTIVE, NEXT_ACTIVE, ACTIVE, INACTIVE_FLOATING, NEXT_ACTIVE_FLOATING, ACTIVE_FLOATING, diff --git a/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndex.java b/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndex.java index 75491603c11a..a702e4e0098f 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndex.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndex.java @@ -68,10 +68,7 @@ import com.intellij.util.io.*; import com.intellij.util.io.storage.HeavyProcessLatch; import com.intellij.util.messages.MessageBus; import com.intellij.util.messages.MessageBusConnection; -import gnu.trove.TIntHashSet; -import gnu.trove.TIntIterator; -import gnu.trove.TIntProcedure; -import gnu.trove.TObjectIntHashMap; +import gnu.trove.*; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -93,29 +90,29 @@ public class FileBasedIndex implements ApplicationComponent { private static final Logger LOG = Logger.getInstance("#com.intellij.util.indexing.FileBasedIndex"); @NonNls private static final String CORRUPTION_MARKER_NAME = "corruption.marker"; - private final Map, Pair, InputFilter>> myIndices = new HashMap, Pair, InputFilter>>(); - private final Map, Semaphore> myUnsavedDataIndexingSemaphores = new HashMap, Semaphore>(); + private final Map, Pair, InputFilter>> myIndices = new THashMap, Pair, InputFilter>>(); + private final Map, Semaphore> myUnsavedDataIndexingSemaphores = new THashMap, Semaphore>(); private final TObjectIntHashMap> myIndexIdToVersionMap = new TObjectIntHashMap>(); - private final Set> myNotRequiringContentIndices = new HashSet>(); - private final Set> myRequiringContentIndices = new HashSet>(); - private final Set myNoLimitCheckTypes = new HashSet(); + private final Set> myNotRequiringContentIndices = new THashSet>(); + private final Set> myRequiringContentIndices = new THashSet>(); + private final Set myNoLimitCheckTypes = new THashSet(); private final PerIndexDocumentVersionMap myLastIndexedDocStamps = new PerIndexDocumentVersionMap(); private final ChangedFilesCollector myChangedFilesCollector; private final List myIndexableSets = ContainerUtil.createEmptyCOWList(); - private final Map myIndexableSetToProjectMap = new HashMap(); + private final Map myIndexableSetToProjectMap = new THashMap(); private static final int OK = 1; private static final int REQUIRES_REBUILD = 2; private static final int REBUILD_IN_PROGRESS = 3; - private static final Map, AtomicInteger> ourRebuildStatus = new HashMap, AtomicInteger>(); + private static final Map, AtomicInteger> ourRebuildStatus = new THashMap, AtomicInteger>(); private final VirtualFileManagerEx myVfManager; private final FileDocumentManager myFileDocumentManager; private final FileTypeManager myFileTypeManager; private final ConcurrentHashSet> myUpToDateIndices = new ConcurrentHashSet>(); - private final Map myTransactionMap = new HashMap(); + private final Map myTransactionMap = new THashMap(); private static final int ALREADY_PROCESSED = 0x02; @Nullable private final String myConfigPath; diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/persistent/PersistentFS.java b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/persistent/PersistentFS.java index e6f3a2ab49e5..80c55ad7a67e 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/persistent/PersistentFS.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/persistent/PersistentFS.java @@ -42,7 +42,9 @@ import com.intellij.util.containers.StripedLockIntObjectConcurrentHashMap; import com.intellij.util.io.DupOutputStream; import com.intellij.util.io.ReplicatorInputStream; import com.intellij.util.messages.MessageBus; +import gnu.trove.THashMap; import gnu.trove.TIntHashSet; +import gnu.trove.TIntObjectHashMap; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -69,8 +71,8 @@ public class PersistentFS extends ManagingFS implements ApplicationComponent { private final MessageBus myEventsBus; - private final Map myRoots = new HashMap(); - private final Map myRootsById = new HashMap(); + private final Map myRoots = new THashMap(); + private final TIntObjectHashMap myRootsById = new TIntObjectHashMap(); private VirtualFileSystemEntry myFakeRoot; private final Object INPUT_LOCK = new Object();