Haha
DEPRECATED Java library to automate the analysis of Android heap dumps.
Install / Use
/learn @square/HahaREADME
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
- This release updates perflib to the
bc5c698efaf970f599e877a8b26de16736db4272SHA of the android_platform_tool_base repo. - It also overlays a patched version of
HprofParser.javato fix https://issuetracker.google.com/issues/122713143.
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
Related Skills
node-connect
347.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
108.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
347.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
347.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
