diff options
-rw-r--r-- | tools/ahat/Android.bp | 3 | ||||
-rw-r--r-- | tools/ahat/src/main/com/android/ahat/heapdump/AhatBitmapInstance.java | 31 |
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; } |