This small utility helps to investigate memory usage problems in Android applications. It parses Java heap dump files (hprof), extracts bitmaps from them and saves bitmaps as PNG files in current directory. While looking at produced bitmap images you can get some insights about how bitmaps use memory in your application.
Pre-built JAR file (Java 8): https://github.com/dtrounine/hprof_bitmap_dump/releases/download/v0.0.0/hprof_bitmap_dump.jar
-
Get HPROF file from a running application and save it on disk
-
Convert the obtained HPROF file using hprof-conv from Android SDK
-
Run from command line:
java -jar hprof_bitmap_dump.jar <converted_hprof_file>
It will generate PNG files in current directory, one for every android.graphics.Bitmap instance in the heap dump. The names of generated files contain IDs of Bitmap instances, so that you can find them by ID in Java Heap Dump viewer (like MAT).
Sometimes it crashes with ArrayIndexOutOfBoundsException, generating only part of bitmaps.
Generated bitmaps have names containing instance IDs
List of bitmaps with instance IDs in MAT