Headless Android Heap Analyzer

Java library to automate the analysis of Android heap dumps.

License

License

Categories

Categories

Square Business Logic Libraries Financial
GroupId

GroupId

com.squareup.haha
ArtifactId

ArtifactId

haha
Last Version

Last Version

2.1
Release Date

Release Date

Type

Type

jar
Description

Description

Headless Android Heap Analyzer
Java library to automate the analysis of Android heap dumps.
Project URL

Project URL

https://github.com/square/haha
Project Organization

Project Organization

Square, Inc.
Source Code Management

Source Code Management

https://github.com/square/haha

Download haha

How to add to project

<!-- https://jarcasting.com/artifacts/com.squareup.haha/haha/ -->
<dependency>
    <groupId>com.squareup.haha</groupId>
    <artifactId>haha</artifactId>
    <version>2.1</version>
</dependency>
// https://jarcasting.com/artifacts/com.squareup.haha/haha/
implementation 'com.squareup.haha:haha:2.1'
// https://jarcasting.com/artifacts/com.squareup.haha/haha/
implementation ("com.squareup.haha:haha:2.1")
'com.squareup.haha:haha:jar:2.1'
<dependency org="com.squareup.haha" name="haha" rev="2.1">
  <artifact name="haha" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.squareup.haha', module='haha', version='2.1')
)
libraryDependencies += "com.squareup.haha" % "haha" % "2.1"
[com.squareup.haha/haha "2.1"]

Dependencies

compile (1)

Group / Artifact Type Version
org.jetbrains.trove4j : trove4j jar 20160824

Project Modules

There are no modules declared in this project.

No Maintenance Intended

Headless Android Heap Analyzer

“Ha Ha!” - Nelson

This repository is DEPRECATED

  • This project was created to provide a heap dump parser for LeakCanary by repackaging heap dump parsers from other repositories.
  • LeakCanary now has its own heap dump parser.
  • That parser is available on Maven Central as com.squareup.leakcanary:leakcanary-haha:2.0-alpha-1.

Introduction

HAHA is a Java library to automate the analysis of Android heap dumps.

This project is essentially a repackaging of the work of others to make it available as a small footprint Maven dependency.

Usage

To learn how to dump the heap, read the Android documentation. Here's an example:

File heapDumpFile = ...
Debug.dumpHprofData(heapDumpFile.getAbsolutePath());

After dumping the heap, use HAHA to parse and analyze it.

DataBuffer buffer = new MemoryMappedFileBuffer(heapDumpFile);
Snapshot snapshot = Snapshot.createSnapshot(buffer);

// The rest is up to you.
ClassObj someClass = snapshot.findClass("com.example.SomeClass");

Gradle config

dependencies {
  compile 'com.squareup.haha:haha:2.1'
}

Versions

HAHA 2.1

HAHA 2.0.4

This release separates out Trove4j from HAHA since Trove4j is available under LGPL 2.1 and HAHA is available under Apache 2.

  • This library contains parts of perflib and is available under the same license, Apache v2.
  • It contains a repackaged version of Guava
  • It has an artifact dependency on a fork of Trove4j ("1.1 with patches from JetBrains") which is available in jcenter under the LGPL 2.1 license.
  • The result is merged in an uber-jar (perflib + guava) proguarded to remove unused code and reduce the footprint.

HAHA 2.0, 2.0.1, 2.0.2, 2.0.3

  • This library contains parts of perflib and is available under the same license, Apache v2.
  • It contains a repackaged version of Guava and Trove4j "1.1 with patches from JetBrains"
  • Trove4j is available under the LGPL 2.1 license.
  • The result is merged in an uber-jar proguarded to remove unused code and reduce the footprint.

HAHA 1.1, 1.2 and 1.3

  • The first versions of HAHA were the result of a series of forks:
  • Eclipse Memory Analyzer (MAT) is a Java heap analyzer. It's a standalone GUI built with Eclipse RCP that embeds an engine to parse and analyze heap dumps.
  • vshor/mat is a fork of Eclipse Memory Analyzer. It removed a lot of code and changed some of it to make a headless version (no GUI), as well as ignore weak references when finding paths to GC Roots.
  • AndroMAT is a fork of vshor/mat and changed the heap dump parsing to support Android specific heap dump format.
  • HAHA was originally a fork of AndroMAT. We recreated the lost Git history, kept the bare minimum needed code and packaged it to be releasable on Maven Central.
  • MAT is available under the Eclipse Public License v1.0 so HAHA was initially released under that same license.

Releasing

mvn release:prepare && mvn release:perform

com.squareup.haha

Square

Versions

Version
2.1
2.0.4
2.0.3
2.0.2
2.0.1
2.0
1.3
1.2
1.1