This is an automated email from the ASF dual-hosted git repository.

dlmarion pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/main by this push:
     new ff205009d7 Provide a better initial size for collections if possible 
(#6464)
ff205009d7 is described below

commit ff205009d78759cbc1bc7cdbed2c3c49cd450c9c
Author: Dave Marion <[email protected]>
AuthorDate: Thu Jul 9 08:00:16 2026 -0400

    Provide a better initial size for collections if possible (#6464)
---
 .../core/clientImpl/ActiveCompactionImpl.java      |  2 +-
 .../core/clientImpl/ClientTabletCache.java         |  2 +-
 .../core/clientImpl/ClientTabletCacheImpl.java     |  6 ++-
 .../core/clientImpl/ConditionalWriterImpl.java     | 21 +++++-----
 .../core/clientImpl/InstanceOperationsImpl.java    | 47 +++++++++++++---------
 .../accumulo/core/clientImpl/OfflineIterator.java  |  1 +
 .../core/clientImpl/RootClientTabletCache.java     |  3 +-
 .../core/clientImpl/SyncingClientTabletCache.java  |  3 +-
 .../core/clientImpl/TableOperationsImpl.java       |  6 +--
 .../clientImpl/TabletInformationCollector.java     |  2 +-
 .../TabletServerBatchReaderIterator.java           | 12 +++---
 .../core/clientImpl/ThriftTransportPool.java       |  6 +--
 .../core/clientImpl/TimeoutClientTabletCache.java  |  3 +-
 .../apache/accumulo/core/clientImpl/bulk/Bulk.java |  7 +++-
 .../accumulo/core/clientImpl/bulk/BulkImport.java  |  8 ++--
 .../accumulo/core/lock/ServiceLockPaths.java       |  2 +-
 .../core/manager/balancer/BalanceParamsImpl.java   |  2 +-
 .../compaction/RatioBasedCompactionPlanner.java    |  2 +-
 .../core/spi/scan/ScanServersSnapshot.java         |  2 +-
 .../util/compaction/ExternalCompactionUtil.java    |  5 ++-
 .../core/clientImpl/ClientTabletCacheImplTest.java |  4 +-
 .../org/apache/accumulo/server/fs/FileManager.java |  2 +-
 .../accumulo/server/manager/LiveTServerSet.java    |  7 ++--
 .../metadata/ConditionalTabletsMutatorImpl.java    | 11 ++---
 .../server/security/AuditedSecurityOperation.java  |  3 +-
 .../apache/accumulo/server/split/SplitUtils.java   |  2 +-
 .../java/org/apache/accumulo/manager/Manager.java  |  2 +-
 .../manager/ManagerClientServiceHandler.java       |  2 +-
 .../manager/tableOps/bulkVer2/BulkImportMove.java  |  2 +-
 .../manager/tableOps/bulkVer2/LoadFiles.java       | 12 +++---
 .../manager/tableOps/bulkVer2/TabletRefresher.java |  3 +-
 .../java/org/apache/accumulo/tserver/RowLocks.java |  1 +
 .../org/apache/accumulo/tserver/ScanServer.java    | 11 ++---
 .../accumulo/tserver/TabletClientHandler.java      |  9 +++--
 .../org/apache/accumulo/tserver/log/DfsLogger.java |  3 +-
 35 files changed, 124 insertions(+), 92 deletions(-)

diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ActiveCompactionImpl.java
 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ActiveCompactionImpl.java
index 08a1c5f401..56b66cc2a6 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ActiveCompactionImpl.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ActiveCompactionImpl.java
@@ -104,7 +104,7 @@ public class ActiveCompactionImpl extends ActiveCompaction {
 
   @Override
   public List<IteratorSetting> getIterators() {
-    ArrayList<IteratorSetting> ret = new ArrayList<>();
+    ArrayList<IteratorSetting> ret = new ArrayList<>(tac.getSsiListSize());
 
     for (IterInfo ii : tac.getSsiList()) {
       IteratorSetting settings =
diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientTabletCache.java 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientTabletCache.java
index 37cd293615..f671dcb27c 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientTabletCache.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientTabletCache.java
@@ -116,7 +116,7 @@ public abstract class ClientTabletCache {
   }
 
   public abstract <T extends Mutation> void binMutations(ClientContext 
context, List<T> mutations,
-      Map<String,TabletServerMutations<T>> binnedMutations, List<T> failures)
+      Map<String,TabletServerMutations<T>> binnedMutations, ArrayList<T> 
failures)
       throws AccumuloException, AccumuloSecurityException, 
TableNotFoundException,
       InvalidTabletHostingRequestException;
 
diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientTabletCacheImpl.java
 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientTabletCacheImpl.java
index 814c4b856f..ed95bc366d 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientTabletCacheImpl.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientTabletCacheImpl.java
@@ -219,7 +219,7 @@ public class ClientTabletCacheImpl extends 
ClientTabletCache {
 
   @Override
   public <T extends Mutation> void binMutations(ClientContext context, List<T> 
mutations,
-      Map<String,TabletServerMutations<T>> binnedMutations, List<T> failures)
+      Map<String,TabletServerMutations<T>> binnedMutations, ArrayList<T> 
failures)
       throws AccumuloException, AccumuloSecurityException, 
TableNotFoundException,
       InvalidTabletHostingRequestException {
 
@@ -257,6 +257,8 @@ public class ClientTabletCacheImpl extends 
ClientTabletCache {
       notInCache.sort((o1, o2) -> WritableComparator.compareBytes(o1.getRow(), 
0,
           o1.getRow().length, o2.getRow(), 0, o2.getRow().length));
 
+      failures.ensureCapacity(failures.size() + notInCache.size());
+
       // Want to ignore any entries in the cache w/o a location that were 
created before the
       // following time. Entries created after the following time may have 
been populated by the
       // following loop, and we want to use those.
@@ -635,7 +637,7 @@ public class ClientTabletCacheImpl extends 
ClientTabletCache {
       return;
     }
 
-    List<TKeyExtent> extentsToBringOnline = new ArrayList<>();
+    List<TKeyExtent> extentsToBringOnline = new 
ArrayList<>(tabletsWithNoLocation.size());
     for (var cachedTablet : tabletsWithNoLocation) {
       if (cachedTablet.getCreationTimer().elapsed().compareTo(STALE_DURATION) 
< 0) {
         if (cachedTablet.getAvailability() == TabletAvailability.ONDEMAND) {
diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ConditionalWriterImpl.java
 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ConditionalWriterImpl.java
index d5417c4fbc..2335196cc6 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ConditionalWriterImpl.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ConditionalWriterImpl.java
@@ -286,7 +286,7 @@ public class ConditionalWriterImpl implements 
ConditionalWriter {
   }
 
   private void queue(List<QCMutation> mutations) {
-    List<QCMutation> failures = new ArrayList<>();
+    ArrayList<QCMutation> failures = new ArrayList<>();
     Map<String,TabletServerMutations<QCMutation>> binnedMutations = new 
HashMap<>();
 
     try {
@@ -349,7 +349,7 @@ public class ConditionalWriterImpl implements 
ConditionalWriter {
   private TabletServerMutations<QCMutation> dequeue(String location) {
     var queue = getServerQueue(location).queue;
 
-    var mutations = new ArrayList<TabletServerMutations<QCMutation>>();
+    var mutations = new 
ArrayList<TabletServerMutations<QCMutation>>(queue.size());
     queue.drainTo(mutations);
 
     if (mutations.isEmpty()) {
@@ -363,8 +363,10 @@ public class ConditionalWriterImpl implements 
ConditionalWriter {
       TabletServerMutations<QCMutation> tsm = mutations.get(0);
 
       for (int i = 1; i < mutations.size(); i++) {
-        mutations.get(i).getMutations().forEach((keyExtent, mutationList) -> 
tsm.getMutations()
-            .computeIfAbsent(keyExtent, k -> new 
ArrayList<>()).addAll(mutationList));
+        mutations.get(i).getMutations()
+            .forEach((keyExtent, mutationList) -> tsm.getMutations()
+                .computeIfAbsent(keyExtent, k -> new 
ArrayList<>(mutationList.size()))
+                .addAll(mutationList));
       }
 
       return tsm;
@@ -388,7 +390,7 @@ public class ConditionalWriterImpl implements 
ConditionalWriter {
     this.classLoaderContext = config.getClassLoaderContext();
 
     Runnable failureHandler = () -> {
-      List<QCMutation> mutations = new ArrayList<>();
+      List<QCMutation> mutations = new ArrayList<>(failedMutations.size());
       failedMutations.drainTo(mutations);
       if (!mutations.isEmpty()) {
         queue(mutations);
@@ -545,7 +547,7 @@ public class ConditionalWriterImpl implements 
ConditionalWriter {
   }
 
   List<SessionID> getActiveSessions() {
-    ArrayList<SessionID> activeSessions = new ArrayList<>();
+    ArrayList<SessionID> activeSessions = new 
ArrayList<>(cachedSessionIDs.values().size() / 2);
     for (SessionID sid : cachedSessionIDs.values()) {
       if (sid.isActive()) {
         activeSessions.add(sid);
@@ -638,8 +640,9 @@ public class ConditionalWriterImpl implements 
ConditionalWriter {
   }
 
   private void queueRetry(Map<Long,CMK> cmidToCm, HostAndPort location) {
-    ArrayList<QCMutation> ignored = new ArrayList<>();
-    for (CMK cmk : cmidToCm.values()) {
+    var values = cmidToCm.values();
+    ArrayList<QCMutation> ignored = new ArrayList<>(values.size());
+    for (CMK cmk : values) {
       ignored.add(cmk.cm);
     }
     queueRetry(ignored, location);
@@ -742,7 +745,7 @@ public class ConditionalWriterImpl implements 
ConditionalWriter {
       CompressedIterators compressedIters) {
 
     mutations.getMutations().forEach((keyExtent, mutationList) -> {
-      var tcondMutaions = new ArrayList<TConditionalMutation>();
+      var tcondMutaions = new 
ArrayList<TConditionalMutation>(mutationList.size());
 
       for (var cm : mutationList) {
         var id = cmid.longValue();
diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/InstanceOperationsImpl.java
 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/InstanceOperationsImpl.java
index ec5af824aa..85d660ca28 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/InstanceOperationsImpl.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/InstanceOperationsImpl.java
@@ -240,28 +240,30 @@ public class InstanceOperationsImpl implements 
InstanceOperations {
   @Override
   @Deprecated(since = "4.0.0")
   public Set<String> getCompactors() {
-    Set<String> results = new HashSet<>();
-    context.getServerPaths().getCompactor(ResourceGroupPredicate.ANY, 
AddressSelector.all(), true)
-        .forEach(t -> results.add(t.getServer()));
+    var compactors = 
context.getServerPaths().getCompactor(ResourceGroupPredicate.ANY,
+        AddressSelector.all(), true);
+    Set<String> results = new HashSet<>(compactors.size(), 1.0f);
+    compactors.forEach(t -> results.add(t.getServer()));
     return results;
   }
 
   @Override
   @Deprecated(since = "4.0.0")
   public Set<String> getScanServers() {
-    Set<String> results = new HashSet<>();
-    context.getServerPaths().getScanServer(ResourceGroupPredicate.ANY, 
AddressSelector.all(), true)
-        .forEach(t -> results.add(t.getServer()));
+    var sservers = 
context.getServerPaths().getScanServer(ResourceGroupPredicate.ANY,
+        AddressSelector.all(), true);
+    Set<String> results = new HashSet<>(sservers.size(), 1.f);
+    sservers.forEach(t -> results.add(t.getServer()));
     return results;
   }
 
   @Override
   @Deprecated(since = "4.0.0")
   public List<String> getTabletServers() {
-    List<String> results = new ArrayList<>();
-    context.getServerPaths()
-        .getTabletServer(ResourceGroupPredicate.ANY, AddressSelector.all(), 
true)
-        .forEach(t -> results.add(t.getServer()));
+    var tserverLocks = 
context.getServerPaths().getTabletServer(ResourceGroupPredicate.ANY,
+        AddressSelector.all(), true);
+    List<String> results = new ArrayList<>(tserverLocks.size());
+    tserverLocks.forEach(t -> results.add(t.getServer()));
     return results;
   }
 
@@ -556,18 +558,22 @@ public class InstanceOperationsImpl implements 
InstanceOperations {
   private Set<ServerId> getServers(ServerId.Type type,
       Predicate<ResourceGroupId> resourceGroupPredicate, AddressSelector 
addressSelector) {
 
-    final Set<ServerId> results = new HashSet<>();
+    final Set<ServerId> results;
 
     switch (type) {
       case COMPACTOR:
-        context.getServerPaths().getCompactor(resourceGroupPredicate::test, 
addressSelector, true)
-            .forEach(c -> results.add(createServerId(type, c)));
+        var compactors = 
context.getServerPaths().getCompactor(resourceGroupPredicate::test,
+            addressSelector, true);
+        results = new HashSet<>(compactors.size(), 1.0f);
+        compactors.forEach(c -> results.add(createServerId(type, c)));
         break;
       case MANAGER:
+        results = new HashSet<>();
         context.getServerPaths().getAssistantManagers(addressSelector, true)
             .forEach(s -> results.add(createServerId(type, s)));
         break;
       case MONITOR:
+        results = new HashSet<>();
         ServiceLockPath mon = context.getServerPaths().getMonitor(true);
         if (mon != null) {
           Optional<ServiceLockData> sld = 
context.getZooCache().getLockData(mon);
@@ -582,6 +588,7 @@ public class InstanceOperationsImpl implements 
InstanceOperations {
         }
         break;
       case GARBAGE_COLLECTOR:
+        results = new HashSet<>();
         ServiceLockPath gc = 
context.getServerPaths().getGarbageCollector(true);
         if (gc != null) {
           Optional<ServiceLockData> sld = 
context.getZooCache().getLockData(gc);
@@ -596,15 +603,19 @@ public class InstanceOperationsImpl implements 
InstanceOperations {
         }
         break;
       case SCAN_SERVER:
-        context.getServerPaths().getScanServer(resourceGroupPredicate::test, 
addressSelector, true)
-            .forEach(s -> results.add(createServerId(type, s)));
+        var sservers = 
context.getServerPaths().getScanServer(resourceGroupPredicate::test,
+            addressSelector, true);
+        results = new HashSet<>(sservers.size(), 1.0f);
+        sservers.forEach(s -> results.add(createServerId(type, s)));
         break;
       case TABLET_SERVER:
-        context.getServerPaths()
-            .getTabletServer(resourceGroupPredicate::test, addressSelector, 
true)
-            .forEach(t -> results.add(createServerId(type, t)));
+        var tservers = 
context.getServerPaths().getTabletServer(resourceGroupPredicate::test,
+            addressSelector, true);
+        results = new HashSet<>(tservers.size(), 1.0f);
+        tservers.forEach(t -> results.add(createServerId(type, t)));
         break;
       default:
+        results = new HashSet<>();
         break;
     }
 
diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/OfflineIterator.java 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/OfflineIterator.java
index 8a6e019d75..3750098ed9 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/OfflineIterator.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/OfflineIterator.java
@@ -233,6 +233,7 @@ final class OfflineIterator implements 
Iterator<Entry<Key,Value>> {
     if (scannerSamplerConfigImpl != null && 
!scannerSamplerConfigImpl.equals(samplerConfImpl)) {
       throw new SampleNotPresentException();
     }
+    readers.ensureCapacity(absFiles.size());
     for (StoredTabletFile file : absFiles) {
       var cs = CryptoFactoryLoader.getServiceForClientWithTable(systemConf, 
tableConf, tableId);
       FileSystem fs = 
VolumeConfiguration.fileSystemForPath(file.getNormalizedPathStr(), conf);
diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/RootClientTabletCache.java
 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/RootClientTabletCache.java
index f2197870aa..47fccc4c67 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/RootClientTabletCache.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/RootClientTabletCache.java
@@ -22,6 +22,7 @@ import static 
com.google.common.util.concurrent.Uninterruptibles.sleepUninterrup
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
@@ -67,7 +68,7 @@ public class RootClientTabletCache extends ClientTabletCache {
 
   @Override
   public <T extends Mutation> void binMutations(ClientContext context, List<T> 
mutations,
-      Map<String,TabletServerMutations<T>> binnedMutations, List<T> failures) {
+      Map<String,TabletServerMutations<T>> binnedMutations, ArrayList<T> 
failures) {
     CachedTablet rootCachedTablet = getRootTabletLocation(context);
     if (rootCachedTablet != null && 
rootCachedTablet.getTserverLocation().isPresent()) {
       var tsm = new 
TabletServerMutations<T>(rootCachedTablet.getTserverSession().orElseThrow());
diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/SyncingClientTabletCache.java
 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/SyncingClientTabletCache.java
index ffc2c0c548..8c11ad2851 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/SyncingClientTabletCache.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/SyncingClientTabletCache.java
@@ -18,6 +18,7 @@
  */
 package org.apache.accumulo.core.clientImpl;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -76,7 +77,7 @@ public class SyncingClientTabletCache extends 
ClientTabletCache {
 
   @Override
   public <T extends Mutation> void binMutations(ClientContext context, List<T> 
mutations,
-      Map<String,TabletServerMutations<T>> binnedMutations, List<T> failures)
+      Map<String,TabletServerMutations<T>> binnedMutations, ArrayList<T> 
failures)
       throws AccumuloException, AccumuloSecurityException, 
TableNotFoundException,
       InvalidTabletHostingRequestException {
     syncLocator().binMutations(context, mutations, binnedMutations, failures);
diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
index d9f3659eef..67ff4e8d94 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
@@ -509,7 +509,7 @@ public class TableOperationsImpl extends 
TableOperationsHelper {
       Map<KeyExtent,List<SplitMergeability>> tabletSplits = 
splitsToTablets.newSplits;
       Map<KeyExtent,TabletMergeability> existingSplits = 
splitsToTablets.existingSplits;
 
-      List<CompletableFuture<Void>> futures = new ArrayList<>();
+      List<CompletableFuture<Void>> futures = new 
ArrayList<>(existingSplits.size());
 
       // Handle existing updates
       if (!existingSplits.isEmpty()) {
@@ -881,7 +881,7 @@ public class TableOperationsImpl extends 
TableOperationsHelper {
   @Override
   public void compact(String tableName, Text start, Text end, boolean flush, 
boolean wait)
       throws AccumuloSecurityException, TableNotFoundException, 
AccumuloException {
-    compact(tableName, start, end, new ArrayList<>(), flush, wait);
+    compact(tableName, start, end, List.of(), flush, wait);
   }
 
   @Override
@@ -1616,7 +1616,7 @@ public class TableOperationsImpl extends 
TableOperationsHelper {
       }
     }
 
-    List<DiskUsage> finalUsages = new ArrayList<>();
+    List<DiskUsage> finalUsages = new ArrayList<>(diskUsages.size());
     for (TDiskUsage diskUsage : diskUsages) {
       finalUsages.add(new DiskUsage(new TreeSet<>(diskUsage.getTables()), 
diskUsage.getUsage()));
     }
diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletInformationCollector.java
 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletInformationCollector.java
index 5e29b52c6b..9624322655 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletInformationCollector.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletInformationCollector.java
@@ -77,7 +77,7 @@ public class TabletInformationCollector {
       }
     });
 
-    List<Stream<TabletInformation>> tabletStreams = new ArrayList<>();
+    List<Stream<TabletInformation>> tabletStreams = new 
ArrayList<>(mergedRanges.size());
     for (RowRange rowRange : mergedRanges) {
 
       Text startRow = rowRange.getLowerBound();
diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchReaderIterator.java
 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchReaderIterator.java
index a580347125..2643546372 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchReaderIterator.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchReaderIterator.java
@@ -323,9 +323,9 @@ public final class TabletServerBatchReaderIterator 
implements Iterator<Entry<Key
 
     // truncate the ranges to within the tablets... this makes it easier to 
know what work
     // needs to be redone when failures occurs and tablets have merged or split
-    Map<String,Map<KeyExtent,List<Range>>> binnedRanges2 = new HashMap<>();
+    Map<String,Map<KeyExtent,List<Range>>> binnedRanges2 = new 
HashMap<>(binnedRanges.size(), 1.0f);
     for (Entry<String,Map<KeyExtent,List<Range>>> entry : 
binnedRanges.entrySet()) {
-      Map<KeyExtent,List<Range>> tabletMap = new HashMap<>();
+      Map<KeyExtent,List<Range>> tabletMap = new 
HashMap<>(entry.getValue().size(), 1.0f);
       binnedRanges2.put(entry.getKey(), tabletMap);
       for (Entry<KeyExtent,List<Range>> tabletRanges : 
entry.getValue().entrySet()) {
         Range tabletRange = tabletRanges.getKey().toDataRange();
@@ -663,10 +663,10 @@ public final class TabletServerBatchReaderIterator 
implements Iterator<Entry<Key
       AccumuloSecurityException, InvalidTabletHostingRequestException {
     ScanServerSelector ecsm = context.getScanServerSelector();
 
-    Map<KeyExtent,String> extentToTserverMap = new HashMap<>();
-    Map<KeyExtent,List<Range>> extentToRangesMap = new HashMap<>();
+    Map<KeyExtent,String> extentToTserverMap = new HashMap<>(ranges.size());
+    Map<KeyExtent,List<Range>> extentToRangesMap = new 
HashMap<>(ranges.size());
 
-    Set<TabletIdImpl> tabletIds = new HashSet<>();
+    Set<TabletIdImpl> tabletIds = new HashSet<>(ranges.size());
 
     List<Range> failures = clientTabletCache.findTablets(context, ranges, 
(cachedTablet, range) -> {
       if (cachedTablet.getTserverLocation().isPresent()) {
@@ -712,7 +712,7 @@ public final class TabletServerBatchReaderIterator 
implements Iterator<Entry<Key
 
     var actions = ecsm.selectServers(params);
 
-    Map<String,BatchAttemptReporter> reporters = new HashMap<>();
+    Map<String,BatchAttemptReporter> reporters = new 
HashMap<>(tabletIds.size());
 
     failures = new ArrayList<>();
 
diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ThriftTransportPool.java
 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ThriftTransportPool.java
index 0841fbc2ea..8d17442298 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ThriftTransportPool.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ThriftTransportPool.java
@@ -144,9 +144,9 @@ public class ThriftTransportPool {
 
   public Pair<String,TTransport> getAnyCachedTransport(ThriftClientTypes<?> 
type) {
 
-    final List<ThriftTransportKey> serversSet = new ArrayList<>();
-
-    for (ThriftTransportKey ttk : connectionPool.getThriftTransportKeys()) {
+    var keys = connectionPool.getThriftTransportKeys();
+    final List<ThriftTransportKey> serversSet = new ArrayList<>(keys.size());
+    for (ThriftTransportKey ttk : keys) {
       if (ttk.getType().equals(type)) {
         serversSet.add(ttk);
       }
diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TimeoutClientTabletCache.java
 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TimeoutClientTabletCache.java
index 77c93de7d4..498849c0a9 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TimeoutClientTabletCache.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TimeoutClientTabletCache.java
@@ -18,6 +18,7 @@
  */
 package org.apache.accumulo.core.clientImpl;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -84,7 +85,7 @@ public class TimeoutClientTabletCache extends 
SyncingClientTabletCache {
 
   @Override
   public <T extends Mutation> void binMutations(ClientContext context, List<T> 
mutations,
-      Map<String,TabletServerMutations<T>> binnedMutations, List<T> failures)
+      Map<String,TabletServerMutations<T>> binnedMutations, ArrayList<T> 
failures)
       throws AccumuloException, AccumuloSecurityException, 
TableNotFoundException,
       InvalidTabletHostingRequestException {
     try {
diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/bulk/Bulk.java 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/bulk/Bulk.java
index 0896971203..f592be2e90 100644
--- a/core/src/main/java/org/apache/accumulo/core/clientImpl/bulk/Bulk.java
+++ b/core/src/main/java/org/apache/accumulo/core/clientImpl/bulk/Bulk.java
@@ -167,13 +167,16 @@ public class Bulk {
   }
 
   public static class Files implements Iterable<FileInfo> {
-    final Map<String,FileInfo> files = new HashMap<>();
+    final Map<String,FileInfo> files;
 
     public Files(Collection<FileInfo> files) {
+      this.files = new HashMap<>(files.size(), 1.0f);
       files.forEach(this::add);
     }
 
-    public Files() {}
+    public Files() {
+      this.files = new HashMap<>();
+    }
 
     public void add(FileInfo fi) {
       if (files.putIfAbsent(fi.name, fi) != null) {
diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/bulk/BulkImport.java 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/bulk/BulkImport.java
index 3bc807f0d4..9a925de345 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/bulk/BulkImport.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/bulk/BulkImport.java
@@ -373,7 +373,7 @@ public class BulkImport implements 
ImportDestinationArguments, ImportMappingOpti
   }
 
   private static Map<String,Long> getFileLenMap(List<FileStatus> statuses) {
-    HashMap<String,Long> fileLens = new HashMap<>();
+    HashMap<String,Long> fileLens = new HashMap<>(statuses.size(), 1.0f);
     for (FileStatus status : statuses) {
       fileLens.put(status.getPath().getName(), status.getLen());
     }
@@ -385,7 +385,7 @@ public class BulkImport implements 
ImportDestinationArguments, ImportMappingOpti
       List<FileStatus> statuses) {
     Map<String,Long> fileLens = getFileLenMap(statuses);
 
-    Map<String,Long> absFileLens = new HashMap<>();
+    Map<String,Long> absFileLens = new HashMap<>(fileLens.size(), 1.0f);
     fileLens.forEach((k, v) -> absFileLens.put(pathToCacheId(new Path(dir, 
k)), v));
 
     Cache<String,Long> fileLenCache =
@@ -548,7 +548,7 @@ public class BulkImport implements 
ImportDestinationArguments, ImportMappingOpti
     // trips to the namenode
     Cache<String,Long> fileLensCache = getPopulatedFileLenCache(context, 
dirPath, files);
 
-    List<CompletableFuture<Map<KeyExtent,Bulk.FileInfo>>> futures = new 
ArrayList<>();
+    List<CompletableFuture<Map<KeyExtent,Bulk.FileInfo>>> futures = new 
ArrayList<>(files.size());
 
     CryptoService cs = CryptoFactoryLoader.getServiceForClientWithTable(
         context.instanceOperations().getSystemConfiguration(), tableProps, 
tableId);
@@ -564,7 +564,7 @@ public class BulkImport implements 
ImportDestinationArguments, ImportMappingOpti
           checkTabletCount(maxTablets, extents.size(), file.toString());
           Map<KeyExtent,Long> estSizes = 
estimateSizes(context.getConfiguration(), file,
               fileStatus.getLen(), extents, fs, fileLensCache, cs);
-          Map<KeyExtent,Bulk.FileInfo> pathLocations = new HashMap<>();
+          Map<KeyExtent,Bulk.FileInfo> pathLocations = new 
HashMap<>(extents.size(), 1.0f);
           for (KeyExtent ke : extents) {
             pathLocations.put(ke, new Bulk.FileInfo(file.getPath(), 
estSizes.getOrDefault(ke, 0L)));
           }
diff --git 
a/core/src/main/java/org/apache/accumulo/core/lock/ServiceLockPaths.java 
b/core/src/main/java/org/apache/accumulo/core/lock/ServiceLockPaths.java
index d197ef2256..cd9c3cab6d 100644
--- a/core/src/main/java/org/apache/accumulo/core/lock/ServiceLockPaths.java
+++ b/core/src/main/java/org/apache/accumulo/core/lock/ServiceLockPaths.java
@@ -464,7 +464,7 @@ public class ServiceLockPaths {
           // thread.
           Executor executor = servers.size() > 64 ? fetchExectuor : 
MoreExecutors.directExecutor();
 
-          List<Future<?>> futures = new ArrayList<>();
+          List<Future<?>> futures = new ArrayList<>(servers.size());
 
           for (final String server : servers) {
             if (addressPredicate.test(server)) {
diff --git 
a/core/src/main/java/org/apache/accumulo/core/manager/balancer/BalanceParamsImpl.java
 
b/core/src/main/java/org/apache/accumulo/core/manager/balancer/BalanceParamsImpl.java
index c259ccfe9a..1409946451 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/manager/balancer/BalanceParamsImpl.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/manager/balancer/BalanceParamsImpl.java
@@ -60,7 +60,7 @@ public class BalanceParamsImpl implements 
TabletBalancer.BalanceParameters {
 
     Map<ResourceGroupId,Set<TabletServerId>> tserverGroups = new HashMap<>();
     currentTServerGrouping.forEach((k, v) -> {
-      Set<TabletServerId> servers = new HashSet<>();
+      Set<TabletServerId> servers = new HashSet<>(v.size());
       v.forEach(tsi -> servers.add(TabletServerIdImpl.fromThrift(tsi)));
       tserverGroups.put(k, servers);
     });
diff --git 
a/core/src/main/java/org/apache/accumulo/core/spi/compaction/RatioBasedCompactionPlanner.java
 
b/core/src/main/java/org/apache/accumulo/core/spi/compaction/RatioBasedCompactionPlanner.java
index 0f4cc10c5e..630f3a5bb7 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/spi/compaction/RatioBasedCompactionPlanner.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/spi/compaction/RatioBasedCompactionPlanner.java
@@ -493,7 +493,7 @@ public class RatioBasedCompactionPlanner implements 
CompactionPlanner {
     int batches = sortedFiles.size() / maxFilesToCompact - 1;
 
     if (batches > 0) {
-      ArrayList<Collection<CompactableFile>> jobs = new ArrayList<>();
+      ArrayList<Collection<CompactableFile>> jobs = new ArrayList<>(batches);
       for (int i = 0; i < batches; i++) {
         jobs.add(sortedFiles.subList(i * maxFilesToCompact, (i + 1) * 
maxFilesToCompact));
       }
diff --git 
a/core/src/main/java/org/apache/accumulo/core/spi/scan/ScanServersSnapshot.java 
b/core/src/main/java/org/apache/accumulo/core/spi/scan/ScanServersSnapshot.java
index 61721f2e04..6926cfee06 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/spi/scan/ScanServersSnapshot.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/spi/scan/ScanServersSnapshot.java
@@ -47,7 +47,7 @@ class ScanServersSnapshot {
     final Map<String,List<String>> serversByHost;
 
     PerHostInfo(Collection<String> servers) {
-      this.serversByHost = new HashMap<>();
+      this.serversByHost = new HashMap<>(servers.size());
 
       servers.forEach(server -> {
         var hp = HostAndPort.fromString(server);
diff --git 
a/core/src/main/java/org/apache/accumulo/core/util/compaction/ExternalCompactionUtil.java
 
b/core/src/main/java/org/apache/accumulo/core/util/compaction/ExternalCompactionUtil.java
index 7c8e878531..54cd5d0ced 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/util/compaction/ExternalCompactionUtil.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/util/compaction/ExternalCompactionUtil.java
@@ -215,11 +215,12 @@ public class ExternalCompactionUtil {
       ExecutorService executor, Consumer<TExternalCompaction> consumer)
       throws InterruptedException {
 
-    final List<RpcFuture<TExternalCompaction>> rcFutures = new ArrayList<>();
     final List<ServerId> failures = new ArrayList<>();
+    final Set<ServerId> compactors =
+        context.instanceOperations().getServers(ServerId.Type.COMPACTOR);
+    final List<RpcFuture<TExternalCompaction>> rcFutures = new 
ArrayList<>(compactors.size());
 
     try {
-      Set<ServerId> compactors = 
context.instanceOperations().getServers(ServerId.Type.COMPACTOR);
       compactors.forEach(s -> {
         final HostAndPort address = HostAndPort.fromParts(s.getHost(), 
s.getPort());
         Future<TExternalCompaction> future =
diff --git 
a/core/src/test/java/org/apache/accumulo/core/clientImpl/ClientTabletCacheImplTest.java
 
b/core/src/test/java/org/apache/accumulo/core/clientImpl/ClientTabletCacheImplTest.java
index cf4bd0aa0a..a2cf16c176 100644
--- 
a/core/src/test/java/org/apache/accumulo/core/clientImpl/ClientTabletCacheImplTest.java
+++ 
b/core/src/test/java/org/apache/accumulo/core/clientImpl/ClientTabletCacheImplTest.java
@@ -297,7 +297,7 @@ public class ClientTabletCacheImplTest {
   private void runTest(ClientTabletCacheImpl metaCache, List<Mutation> ml,
       Map<String,Map<KeyExtent,List<String>>> emb, String... efailures) throws 
Exception {
     Map<String,TabletServerMutations<Mutation>> binnedMutations = new 
HashMap<>();
-    List<Mutation> afailures = new ArrayList<>();
+    ArrayList<Mutation> afailures = new ArrayList<>();
     metaCache.binMutations(context, ml, binnedMutations, afailures);
 
     verify(emb, binnedMutations);
@@ -1819,7 +1819,7 @@ public class ClientTabletCacheImplTest {
       ml.add(createNewMutation("" + c, "cf1:cq1=v3", "cf1:cq2=v4"));
     }
     Map<String,TabletServerMutations<Mutation>> binnedMutations = new 
HashMap<>();
-    List<Mutation> afailures = new ArrayList<>();
+    ArrayList<Mutation> afailures = new ArrayList<>();
     assertEquals(List.of(), lookups);
     metaCache.binMutations(context, ml, binnedMutations, afailures);
     assertTrue(binnedMutations.isEmpty());
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/fs/FileManager.java 
b/server/base/src/main/java/org/apache/accumulo/server/fs/FileManager.java
index d6972b90fa..c85dd5d6ea 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/fs/FileManager.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/fs/FileManager.java
@@ -115,7 +115,7 @@ public class FileManager {
 
       long curTime = System.currentTimeMillis();
 
-      ArrayList<FileSKVIterator> filesToClose = new ArrayList<>();
+      ArrayList<FileSKVIterator> filesToClose = new 
ArrayList<>(openFiles.size());
 
       // determine which files to close in a sync block, and then close the
       // files outside of the sync block
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/manager/LiveTServerSet.java
 
b/server/base/src/main/java/org/apache/accumulo/server/manager/LiveTServerSet.java
index 3e86c0441d..f8b14875b1 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/manager/LiveTServerSet.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/manager/LiveTServerSet.java
@@ -418,7 +418,7 @@ public class LiveTServerSet implements ZooCacheWatcher {
         Map<ResourceGroupId,Set<TServerInstance>> serverGroups) {
       this.tserversInfo = null;
       this.tservers = Set.copyOf(currentServers);
-      Map<ResourceGroupId,Set<TServerInstance>> copy = new HashMap<>();
+      Map<ResourceGroupId,Set<TServerInstance>> copy = new 
HashMap<>(serverGroups.size(), 1.0f);
       serverGroups.forEach((k, v) -> copy.put(k, Set.copyOf(v)));
       this.tserverGroups = Collections.unmodifiableMap(copy);
     }
@@ -427,7 +427,7 @@ public class LiveTServerSet implements ZooCacheWatcher {
         Map<ResourceGroupId,Set<TServerInstance>> serverGroups) {
       this.tserversInfo = Map.copyOf(currentServers);
       this.tservers = this.tserversInfo.keySet();
-      Map<ResourceGroupId,Set<TServerInstance>> copy = new HashMap<>();
+      Map<ResourceGroupId,Set<TServerInstance>> copy = new 
HashMap<>(serverGroups.size(), 1.0f);
       serverGroups.forEach((k, v) -> copy.put(k, Set.copyOf(v)));
       this.tserverGroups = Collections.unmodifiableMap(copy);
     }
@@ -443,7 +443,8 @@ public class LiveTServerSet implements ZooCacheWatcher {
 
   public synchronized LiveTServersSnapshot getSnapshot() {
     if (tServersSnapshot == null) {
-      HashMap<TServerInstance,TServerInfo> tServerInstances = new HashMap<>();
+      HashMap<TServerInstance,TServerInfo> tServerInstances =
+          new HashMap<>(current.values().size());
       Map<ResourceGroupId,Set<TServerInstance>> tserversGroups = new 
HashMap<>();
       current.values().forEach(tServerInfo -> {
         tServerInstances.put(tServerInfo.instance, tServerInfo);
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/metadata/ConditionalTabletsMutatorImpl.java
 
b/server/base/src/main/java/org/apache/accumulo/server/metadata/ConditionalTabletsMutatorImpl.java
index b4435f1fb1..c6d20e5c3b 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/metadata/ConditionalTabletsMutatorImpl.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/metadata/ConditionalTabletsMutatorImpl.java
@@ -177,7 +177,7 @@ public class ConditionalTabletsMutatorImpl implements 
Ample.ConditionalTabletsMu
         .logInterval(Duration.ofMinutes(3)).createRetry();
   }
 
-  private Iterator<ConditionalWriter.Result> writeMutations(ConditionalWriter 
conditionalWriter) {
+  private List<ConditionalWriter.Result> writeMutations(ConditionalWriter 
conditionalWriter) {
     var results = conditionalWriter.write(mutations.iterator());
 
     List<ConditionalWriter.Result> resultsList = new ArrayList<>();
@@ -206,7 +206,7 @@ public class ConditionalTabletsMutatorImpl implements 
Ample.ConditionalTabletsMu
       partitionResults(results, resultsList, unknownResults);
     }
 
-    return resultsList.iterator();
+    return resultsList;
   }
 
   private Ample.ConditionalResult.Status mapStatus(KeyExtent extent,
@@ -251,10 +251,11 @@ public class ConditionalTabletsMutatorImpl implements 
Ample.ConditionalTabletsMu
 
         var results = writeMutations(conditionalWriter);
 
-        var resultsMap = new HashMap<KeyExtent,ConditionalWriter.Result>();
+        var resultsMap = new 
HashMap<KeyExtent,ConditionalWriter.Result>(results.size(), 1.0f);
 
-        while (results.hasNext()) {
-          var result = results.next();
+        var resultsIter = results.iterator();
+        while (resultsIter.hasNext()) {
+          var result = resultsIter.next();
           var row = new Text(result.getMutation().getRow());
           resultsMap.put(extents.get(row), result);
         }
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/security/AuditedSecurityOperation.java
 
b/server/base/src/main/java/org/apache/accumulo/server/security/AuditedSecurityOperation.java
index c0687b53cc..70039a2fab 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/security/AuditedSecurityOperation.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/security/AuditedSecurityOperation.java
@@ -129,7 +129,8 @@ public class AuditedSecurityOperation extends 
SecurityOperation {
   private static final int MAX_ELEMENTS_TO_LOG = 10;
 
   private static List<String> truncate(Collection<?> list) {
-    List<String> result = new ArrayList<>();
+    List<String> result =
+        new ArrayList<>(list.size() > MAX_ELEMENTS_TO_LOG ? 
MAX_ELEMENTS_TO_LOG + 1 : list.size());
     int i = 0;
     for (Object obj : list) {
       if (i++ > MAX_ELEMENTS_TO_LOG) {
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/split/SplitUtils.java 
b/server/base/src/main/java/org/apache/accumulo/server/split/SplitUtils.java
index ac4d03a53e..dd1c312754 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/split/SplitUtils.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/split/SplitUtils.java
@@ -110,7 +110,7 @@ public class SplitUtils {
   private static ArrayList<FileSKVIterator> openIndexes(ServerContext context,
       TableConfiguration tableConf, Collection<StoredTabletFile> files) throws 
IOException {
 
-    ArrayList<FileSKVIterator> readers = new ArrayList<>();
+    ArrayList<FileSKVIterator> readers = new ArrayList<>(files.size());
 
     try {
       for (TabletFile file : files) {
diff --git 
a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java 
b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
index c7c1a3cc05..ed20d3e0ff 100644
--- a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
+++ b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
@@ -799,7 +799,7 @@ public class Manager extends AbstractServer
     long start = System.currentTimeMillis();
     final SortedMap<TServerInstance,TabletServerStatus> result = new 
ConcurrentSkipListMap<>();
     final RateLimiter shutdownServerRateLimiter = 
RateLimiter.create(MAX_SHUTDOWNS_PER_SEC);
-    final ArrayList<Future<?>> tasks = new ArrayList<>();
+    final ArrayList<Future<?>> tasks = new ArrayList<>(currentServers.size());
     for (TServerInstance serverInstance : currentServers) {
       final TServerInstance server = serverInstance;
       if (threads == 0) {
diff --git 
a/server/manager/src/main/java/org/apache/accumulo/manager/ManagerClientServiceHandler.java
 
b/server/manager/src/main/java/org/apache/accumulo/manager/ManagerClientServiceHandler.java
index 19aaaa1bd0..90b78baa13 100644
--- 
a/server/manager/src/main/java/org/apache/accumulo/manager/ManagerClientServiceHandler.java
+++ 
b/server/manager/src/main/java/org/apache/accumulo/manager/ManagerClientServiceHandler.java
@@ -786,7 +786,7 @@ public class ManagerClientServiceHandler implements 
ManagerClientService.Iface {
       }
 
       var results = tabletsMutator.process();
-      List<TKeyExtent> updated = new ArrayList<>();
+      List<TKeyExtent> updated = new ArrayList<>(results.size());
       results.forEach((key, result) -> {
         if (result.getStatus() == Status.ACCEPTED) {
           updated.add(result.getExtent().toThrift());
diff --git 
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/BulkImportMove.java
 
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/BulkImportMove.java
index 4537cf3cd2..dd1d78faac 100644
--- 
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/BulkImportMove.java
+++ 
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/BulkImportMove.java
@@ -95,7 +95,7 @@ class BulkImportMove extends AbstractBulkFateOperation {
       final VolumeManager fs, Map<String,String> renames) throws Exception {
     env.getContext().getAmple().addBulkLoadInProgressFlag(
         "/" + bulkDir.getParent().getName() + "/" + bulkDir.getName(), fateId);
-    Map<Path,Path> oldToNewMap = new HashMap<>();
+    Map<Path,Path> oldToNewMap = new HashMap<>(renames.size(), 1.0f);
 
     for (Map.Entry<String,String> renameEntry : renames.entrySet()) {
       final Path originalPath = new Path(sourceDir, renameEntry.getKey());
diff --git 
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java
 
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java
index 75c71f0222..61f11c1950 100644
--- 
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java
+++ 
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java
@@ -165,7 +165,7 @@ class LoadFiles extends AbstractBulkFateOperation {
 
     void load(List<TabletMetadata> tablets, Files files) {
 
-      Map<ReferencedTabletFile,Bulk.FileInfo> toLoad = new HashMap<>();
+      Map<ReferencedTabletFile,Bulk.FileInfo> toLoad = new 
HashMap<>(files.getSize(), 1.0f);
       for (var fileInfo : files) {
         toLoad.put(new ReferencedTabletFile(new Path(bulkDir, 
fileInfo.getFileName())), fileInfo);
       }
@@ -223,7 +223,7 @@ class LoadFiles extends AbstractBulkFateOperation {
           continue;
         }
 
-        Map<ReferencedTabletFile,DataFileValue> filesToLoad = new HashMap<>();
+        Map<ReferencedTabletFile,DataFileValue> filesToLoad = new 
HashMap<>(toLoad.size(), 1.0f);
 
         var tabletTime = TabletTime.getInstance(tablet.getTime());
 
@@ -283,10 +283,7 @@ class LoadFiles extends AbstractBulkFateOperation {
 
     private Map<KeyExtent,Long> allocateTimestamps(List<TabletMetadata> 
tablets, int numStamps) {
 
-      Map<HostAndPort,List<TKeyExtent>> serversToAsk = new HashMap<>();
-
-      Map<KeyExtent,Long> allTimestamps = new HashMap<>();
-
+      Map<HostAndPort,List<TKeyExtent>> serversToAsk = new 
HashMap<>(tablets.size());
       for (var tablet : tablets) {
         if (tablet.getLocation() != null && tablet.getLocation().getType() == 
CURRENT) {
           var location = tablet.getLocation().getHostAndPort();
@@ -295,6 +292,7 @@ class LoadFiles extends AbstractBulkFateOperation {
         }
       }
 
+      Map<KeyExtent,Long> allTimestamps = new HashMap<>(serversToAsk.size());
       for (var entry : serversToAsk.entrySet()) {
         HostAndPort server = entry.getKey();
         List<TKeyExtent> extents = entry.getValue();
@@ -326,7 +324,7 @@ class LoadFiles extends AbstractBulkFateOperation {
         log.trace("{} allocate timestamps request to {} returned {} 
timestamps", fateId, server,
             timestamps.size());
 
-        var converted = new HashMap<KeyExtent,Long>();
+        var converted = new HashMap<KeyExtent,Long>(timestamps.size(), 1.0f);
         timestamps.forEach((k, v) -> converted.put(KeyExtent.fromThrift(k), 
v));
         return converted;
       } catch (TException ex) {
diff --git 
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/TabletRefresher.java
 
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/TabletRefresher.java
index f629550231..5d45b0c212 100644
--- 
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/TabletRefresher.java
+++ 
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/TabletRefresher.java
@@ -102,7 +102,8 @@ public class TabletRefresher {
 
     while (!refreshesNeeded.isEmpty()) {
 
-      Map<TabletMetadata.Location,Future<List<TKeyExtent>>> futures = new 
HashMap<>();
+      Map<TabletMetadata.Location,Future<List<TKeyExtent>>> futures =
+          new HashMap<>(refreshesNeeded.size(), 1.0f);
 
       for (Map.Entry<TabletMetadata.Location,List<TKeyExtent>> entry : 
refreshesNeeded.entrySet()) {
 
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/RowLocks.java 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/RowLocks.java
index baa20300af..900cbe5b8d 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/RowLocks.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/RowLocks.java
@@ -90,6 +90,7 @@ class RowLocks {
     ArrayList<RowLock> locks = new ArrayList<>();
 
     for (List<ServerConditionalMutation> scml : updates.values()) {
+      locks.ensureCapacity(locks.size() + scml.size());
       for (ServerConditionalMutation scm : scml) {
         locks.add(getRowLock(new ArrayByteSequence(scm.getRow())));
       }
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServer.java 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServer.java
index ce043e0e6b..0d3363c302 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServer.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServer.java
@@ -695,7 +695,7 @@ public class ScanServer extends AbstractServer
       }
     }
 
-    Map<StoredTabletFile,KeyExtent> allFiles = new HashMap<>();
+    Map<StoredTabletFile,KeyExtent> allFiles = new HashMap<>(extents.size());
 
     tabletsMetadata.forEach((extent, tm) -> {
       tm.getFiles().forEach(file -> allFiles.put(file, extent));
@@ -856,7 +856,7 @@ public class ScanServer extends AbstractServer
     }
 
     // Convert failures
-    Map<TKeyExtent,List<TRange>> failures = new HashMap<>();
+    Map<TKeyExtent,List<TRange>> failures = new 
HashMap<>(failedReservations.size(), 1.0f);
     failedReservations.forEach(extent -> {
       failures.put(extent.toThrift(), extents.get(extent));
     });
@@ -1134,7 +1134,7 @@ public class ScanServer extends AbstractServer
       throw new TException("Scan Server batch must include at least one 
extent");
     }
 
-    final Map<KeyExtent,List<TRange>> batch = new HashMap<>();
+    final Map<KeyExtent,List<TRange>> batch = new HashMap<>(tbatch.size(), 
1.0f);
 
     for (Entry<TKeyExtent,List<TRange>> entry : tbatch.entrySet()) {
       KeyExtent extent = getKeyExtent(entry.getKey());
@@ -1150,8 +1150,9 @@ public class ScanServer extends AbstractServer
 
     try (ScanReservation reservation = reserveFilesInstrumented(batch)) {
 
-      HashMap<KeyExtent,TabletBase> tablets = new HashMap<>();
-      reservation.getTabletMetadataExtents().forEach(extent -> {
+      var extents = reservation.getTabletMetadataExtents();
+      HashMap<KeyExtent,TabletBase> tablets = new HashMap<>(extents.size(), 
1.0f);
+      extents.forEach(extent -> {
         try {
           tablets.put(extent, reservation.newTablet(this, extent));
         } catch (IOException e) {
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java
 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java
index 00372ac267..c571c66787 100644
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java
@@ -584,6 +584,7 @@ public class TabletClientHandler implements 
TabletServerClientService.Iface,
       final Tablet tablet = server.getOnlineTablet(entry.getKey());
 
       if (tablet == null || tablet.isClosed()) {
+        results.ensureCapacity(results.size() + entry.getValue().size());
         for (ServerConditionalMutation scm : entry.getValue()) {
           results.add(new TCMResult(scm.getID(), TCMStatus.IGNORED));
         }
@@ -607,6 +608,7 @@ public class TabletClientHandler implements 
TabletServerClientService.Iface,
           // clear anything added while checking conditions.
           resultsSubList.clear();
 
+          results.ensureCapacity(results.size() + entry.getValue().size());
           for (ServerConditionalMutation scm : entry.getValue()) {
             results.add(new TCMResult(scm.getID(), TCMStatus.IGNORED));
           }
@@ -1201,11 +1203,12 @@ public class TabletClientHandler implements 
TabletServerClientService.Iface,
     // handle that more expensive case if needed.
     var tabletsSnapshot = server.getOnlineTablets();
 
-    Map<KeyExtent,Tablet.RefreshSession> refreshSessions = new HashMap<>();
+    Map<KeyExtent,Tablet.RefreshSession> refreshSessions = new 
HashMap<>(refreshes.size(), 1.0f);
 
     // Created this as synchronized list because it's passed to a lambda that 
could possibly run in
     // another thread.
-    List<TKeyExtent> unableToRefresh = Collections.synchronizedList(new 
ArrayList<>());
+    List<TKeyExtent> unableToRefresh =
+        Collections.synchronizedList(new ArrayList<>(refreshes.size()));
 
     for (var tkextent : refreshes) {
       var extent = KeyExtent.fromThrift(tkextent);
@@ -1254,7 +1257,7 @@ public class TabletClientHandler implements 
TabletServerClientService.Iface,
 
     var tabletsSnapshot = server.getOnlineTablets();
 
-    Map<TKeyExtent,Long> timestamps = new HashMap<>();
+    Map<TKeyExtent,Long> timestamps = new HashMap<>(extents.size(), 1.0f);
 
     for (var textent : extents) {
       var extent = KeyExtent.fromThrift(textent);
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/DfsLogger.java 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/DfsLogger.java
index dba90916ef..392c347dda 100644
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/DfsLogger.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/DfsLogger.java
@@ -155,6 +155,7 @@ public final class DfsLogger implements 
Comparable<DfsLogger> {
           Thread.currentThread().interrupt();
           continue;
         }
+        work.ensureCapacity(work.size() + workQueue.size());
         workQueue.drainTo(work);
 
         Optional<Boolean> shouldHSync = Optional.empty();
@@ -604,7 +605,7 @@ public final class DfsLogger implements 
Comparable<DfsLogger> {
 
   public LoggerOperation logManyTablets(Collection<TabletMutations> mutations) 
throws IOException {
     Durability durability = Durability.NONE;
-    List<Pair<LogFileKey,LogFileValue>> data = new ArrayList<>();
+    List<Pair<LogFileKey,LogFileValue>> data = new 
ArrayList<>(mutations.size());
     for (TabletMutations tabletMutations : mutations) {
       LogFileKey key = new LogFileKey();
       key.setEvent(MANY_MUTATIONS);

Reply via email to