summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/ahat/Android.bp3
-rw-r--r--tools/ahat/src/main/com/android/ahat/heapdump/AhatBitmapInstance.java31
2 files changed, 16 insertions, 18 deletions
diff --git a/tools/ahat/Android.bp b/tools/ahat/Android.bp
index e1c7314605..6db914b277 100644
--- a/tools/ahat/Android.bp
+++ b/tools/ahat/Android.bp
@@ -34,9 +34,6 @@ java_binary_host {
// Use a relaxed version to allow distribution against older runtimes.
java_version: "11",
javacflags: ["-Xdoclint:all/protected"],
- static_libs: [
- "guava",
- ],
}
// --- ahat-test-dump.jar --------------
diff --git a/tools/ahat/src/main/com/android/ahat/heapdump/AhatBitmapInstance.java b/tools/ahat/src/main/com/android/ahat/heapdump/AhatBitmapInstance.java
index 30631784ab..c8a48dd08a 100644
--- a/tools/ahat/src/main/com/android/ahat/heapdump/AhatBitmapInstance.java
+++ b/tools/ahat/src/main/com/android/ahat/heapdump/AhatBitmapInstance.java
@@ -17,16 +17,15 @@
package com.android.ahat.heapdump;
import java.awt.image.BufferedImage;
-import java.util.Arrays;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
-import java.util.stream.Collectors;
-import com.google.common.collect.TreeMultimap;
+import java.util.TreeMap;
/**
* A java object that has `android.graphics.Bitmap` as its base class.
@@ -66,14 +65,14 @@ public class AhatBitmapInstance extends AhatClassInstance implements Comparable<
private int format;
private Map<Long, byte[]> buffers;
private Set<Long> referenced;
- private TreeMultimap<BitmapInfo, AhatBitmapInstance> instances;
+ private Map<BitmapInfo, List<AhatBitmapInstance>> instances;
BitmapDumpData(int count, int format) {
this.count = count;
this.format = format;
this.buffers = new HashMap<Long, byte[]>(count);
this.referenced = new HashSet<Long>(count);
- this.instances = TreeMultimap.create();
+ this.instances = new TreeMap<>();
}
};
@@ -124,16 +123,15 @@ public class AhatBitmapInstance extends AhatClassInstance implements Comparable<
AhatBitmapInstance bmp = obj.asBitmapInstance();
if (bmp != null) {
BitmapInfo info = bmp.getBitmapInfo(result);
- if (info != null) {
- result.instances.put(info, bmp);
+
+ // Avoid adding instances referenced from BitmapDumpData. These
+ // instances shall *not* be counted.
+ if (info != null && !result.referenced.contains(bmp.getId())) {
+ result.instances.computeIfAbsent(info, k -> new ArrayList<>()).add(bmp);
}
}
}
- /* remove all instances referenced from BitmapDumpData,
- * these instances shall *not* be counted
- */
- instances.removeIf(i -> { return result.referenced.contains(i.getId()); });
return result;
}
@@ -182,10 +180,13 @@ public class AhatBitmapInstance extends AhatClassInstance implements Comparable<
*/
public static List<List<AhatBitmapInstance>> findDuplicates(BitmapDumpData bitmapDumpData) {
if (bitmapDumpData != null) {
- return bitmapDumpData.instances.keySet().stream()
- .filter(k -> bitmapDumpData.instances.get(k).size() > 1)
- .map(k -> new ArrayList<>(bitmapDumpData.instances.get(k)))
- .collect(Collectors.toList());
+ List<List<AhatBitmapInstance>> duplicates = new ArrayList<>();
+ for (List<AhatBitmapInstance> values : bitmapDumpData.instances.values()) {
+ if (values.size() > 1) {
+ duplicates.add(new ArrayList<>(values));
+ }
+ }
+ return duplicates;
}
return null;
}