From ea4e02e1027b2a58661e5d3508838c3e5da1f7b7 Mon Sep 17 00:00:00 2001 From: Jaime Wren Date: Mon, 5 Jan 2026 10:55:31 -0800 Subject: [PATCH] Refactor ArrayList to SmartList to optimize memory usage --- .../lang/dart/analyzer/DartAnalysisServerService.java | 2 +- .../jetbrains/lang/dart/ide/index/DartFileIndexData.java | 9 +++++---- .../server/vmService/DartVmServiceBreakpointHandler.java | 3 ++- .../jetbrains/lang/dart/util/DartRefactoringUtil.java | 3 ++- .../java/com/jetbrains/lang/dart/util/DartTestUtils.java | 2 +- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/third_party/src/main/java/com/jetbrains/lang/dart/analyzer/DartAnalysisServerService.java b/third_party/src/main/java/com/jetbrains/lang/dart/analyzer/DartAnalysisServerService.java index 61ff8361e..9c65604cc 100644 --- a/third_party/src/main/java/com/jetbrains/lang/dart/analyzer/DartAnalysisServerService.java +++ b/third_party/src/main/java/com/jetbrains/lang/dart/analyzer/DartAnalysisServerService.java @@ -147,7 +147,7 @@ public final class DartAnalysisServerService implements Disposable { private final DartServerRootsHandler myRootsHandler; private final Map myFilePathWithOverlaidContentToTimestamp = Collections.synchronizedMap(new HashMap<>()); - private final List myVisibleFileUris = new ArrayList<>(); + private final List myVisibleFileUris = new SmartList<>(); private final Set myChangedDocuments = new HashSet<>(); private final Alarm myUpdateFilesAlarm; diff --git a/third_party/src/main/java/com/jetbrains/lang/dart/ide/index/DartFileIndexData.java b/third_party/src/main/java/com/jetbrains/lang/dart/ide/index/DartFileIndexData.java index d832dafb4..79de464d8 100644 --- a/third_party/src/main/java/com/jetbrains/lang/dart/ide/index/DartFileIndexData.java +++ b/third_party/src/main/java/com/jetbrains/lang/dart/ide/index/DartFileIndexData.java @@ -1,6 +1,7 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.jetbrains.lang.dart.ide.index; +import com.intellij.util.SmartList; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -10,12 +11,12 @@ import java.util.Map; public final class DartFileIndexData { - private final List myClassNames = new ArrayList<>(); - private final List myImportAndExportInfos = new ArrayList<>(); + private final List myClassNames = new SmartList<>(); + private final List myImportAndExportInfos = new SmartList<>(); private final Map myComponentInfoMap = new HashMap<>(); private @Nullable String myLibraryName; - private final List myPartUris = new ArrayList<>(); - private final List mySymbols = new ArrayList<>(); + private final List myPartUris = new SmartList<>(); + private final List mySymbols = new SmartList<>(); private boolean myIsPart; public List getClassNames() { diff --git a/third_party/src/main/java/com/jetbrains/lang/dart/ide/runner/server/vmService/DartVmServiceBreakpointHandler.java b/third_party/src/main/java/com/jetbrains/lang/dart/ide/runner/server/vmService/DartVmServiceBreakpointHandler.java index f620feb95..714de8126 100644 --- a/third_party/src/main/java/com/jetbrains/lang/dart/ide/runner/server/vmService/DartVmServiceBreakpointHandler.java +++ b/third_party/src/main/java/com/jetbrains/lang/dart/ide/runner/server/vmService/DartVmServiceBreakpointHandler.java @@ -1,6 +1,7 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.jetbrains.lang.dart.ide.runner.server.vmService; +import com.intellij.util.SmartList; import com.intellij.xdebugger.breakpoints.XBreakpointHandler; import com.intellij.xdebugger.breakpoints.XBreakpointProperties; import com.intellij.xdebugger.breakpoints.XLineBreakpoint; @@ -103,7 +104,7 @@ public XLineBreakpoint getXBreakpoint(final @NotNull Brea class IsolateBreakpointInfo { private final String myIsolateId; private final DartVmServiceDebugProcess myDebugProcess; - private final List myTemporaryVmBreakpointIds = new ArrayList<>(); + private final List myTemporaryVmBreakpointIds = new SmartList<>(); private final Map, Set> myXBreakpointToVmBreakpointIdsMap = new HashMap<>(); IsolateBreakpointInfo(@NotNull String isolateId, @NotNull DartVmServiceDebugProcess debugProcess) { diff --git a/third_party/src/main/java/com/jetbrains/lang/dart/util/DartRefactoringUtil.java b/third_party/src/main/java/com/jetbrains/lang/dart/util/DartRefactoringUtil.java index b9745f5d8..9630d1833 100644 --- a/third_party/src/main/java/com/jetbrains/lang/dart/util/DartRefactoringUtil.java +++ b/third_party/src/main/java/com/jetbrains/lang/dart/util/DartRefactoringUtil.java @@ -10,6 +10,7 @@ import com.intellij.psi.PsiWhiteSpace; import com.intellij.psi.ResolveState; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.util.SmartList; import com.intellij.util.containers.ContainerUtil; import com.jetbrains.lang.dart.DartComponentType; import com.jetbrains.lang.dart.DartTokenTypes; @@ -49,7 +50,7 @@ public static Set collectUsedComponents(PsiElement context) { if (context == null) { return Collections.emptyList(); } - final List occurrences = new ArrayList<>(); + final List occurrences = new SmartList<>(); context.acceptChildren(new DartRecursiveVisitor() { @Override public void visitElement(final @NotNull PsiElement element) { diff --git a/third_party/src/test/java/com/jetbrains/lang/dart/util/DartTestUtils.java b/third_party/src/test/java/com/jetbrains/lang/dart/util/DartTestUtils.java index 2277e679f..e8324ee8a 100644 --- a/third_party/src/test/java/com/jetbrains/lang/dart/util/DartTestUtils.java +++ b/third_party/src/test/java/com/jetbrains/lang/dart/util/DartTestUtils.java @@ -117,7 +117,7 @@ public static void configureDartSdk(@NotNull final Module module, @NotNull final public static List extractPositionMarkers(@NotNull final Project project, @NotNull final Document document) { final Pattern caretPattern = Pattern.compile( ""); - final List result = new ArrayList<>(); + final List result = new SmartList<>(); WriteCommandAction.runWriteCommandAction(null, () -> { while (true) {