From 333d9757d2b0a06f29f3eac2d2c9e4f89b795c1e Mon Sep 17 00:00:00 2001 From: Jan Sebechlebsky Date: Wed, 8 Mar 2023 15:49:18 +0100 Subject: [PATCH] Do not preallocate memory in default constructor of Sparse.*Array By heapdump examination this saves not-an-insignificant amount of memory and significant amount of allocations. Similar change was also introduced for ArrayList & HashMap implementation in JDK8. More details in go/if-xr-android-util-collections-lazy-init. Bug: 272467748 Test: Verified system server heapdump Change-Id: I849dbaa46e79eae0b61b93a7ab1f5d5ef8bfbf7f --- core/java/android/util/SparseArray.java | 2 +- core/java/android/util/SparseBooleanArray.java | 2 +- core/java/android/util/SparseDoubleArray.java | 2 +- core/java/android/util/SparseIntArray.java | 2 +- core/java/android/util/SparseLongArray.java | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/java/android/util/SparseArray.java b/core/java/android/util/SparseArray.java index cc83decc7b21c..cd03d83b818cd 100644 --- a/core/java/android/util/SparseArray.java +++ b/core/java/android/util/SparseArray.java @@ -71,7 +71,7 @@ public class SparseArray implements Cloneable { * Creates a new SparseArray containing no mappings. */ public SparseArray() { - this(10); + this(0); } /** diff --git a/core/java/android/util/SparseBooleanArray.java b/core/java/android/util/SparseBooleanArray.java index c145b20e6f6c1..12a99004daed4 100644 --- a/core/java/android/util/SparseBooleanArray.java +++ b/core/java/android/util/SparseBooleanArray.java @@ -51,7 +51,7 @@ public class SparseBooleanArray implements Cloneable { * Creates a new SparseBooleanArray containing no mappings. */ public SparseBooleanArray() { - this(10); + this(0); } /** diff --git a/core/java/android/util/SparseDoubleArray.java b/core/java/android/util/SparseDoubleArray.java index ee2e3ce3e0eec..4b0cbe45d857a 100644 --- a/core/java/android/util/SparseDoubleArray.java +++ b/core/java/android/util/SparseDoubleArray.java @@ -50,7 +50,7 @@ public class SparseDoubleArray implements Cloneable { /** Creates a new SparseDoubleArray containing no mappings. */ public SparseDoubleArray() { - this(10); + this(0); } /** diff --git a/core/java/android/util/SparseIntArray.java b/core/java/android/util/SparseIntArray.java index d4f6685e43477..0e98c285c227f 100644 --- a/core/java/android/util/SparseIntArray.java +++ b/core/java/android/util/SparseIntArray.java @@ -58,7 +58,7 @@ public class SparseIntArray implements Cloneable { * Creates a new SparseIntArray containing no mappings. */ public SparseIntArray() { - this(10); + this(0); } /** diff --git a/core/java/android/util/SparseLongArray.java b/core/java/android/util/SparseLongArray.java index b739e379499c4..e86b6472dc395 100644 --- a/core/java/android/util/SparseLongArray.java +++ b/core/java/android/util/SparseLongArray.java @@ -51,7 +51,7 @@ public class SparseLongArray implements Cloneable { * Creates a new SparseLongArray containing no mappings. */ public SparseLongArray() { - this(10); + this(0); } /**