OSS探訪GitHubでログイン

Androidアプリの保持オブジェクトを追跡し、メモリリークの経路を示す

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
30,005
主要言語
Kotlin
ライセンス
Apache-2.0
リポジトリ最終更新
2026/10/05
ページ内ナビ

概要

LeakCanaryはAndroidアプリの開発中に、解放されないオブジェクトを見つけ、保持している参照経路を可視化する診断ライブラリです。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

解放されるはずのオブジェクトを監視して参照経路を解析する

LeakCanaryはAndroidのActivityなどが破棄された後も保持されているかを監視し、ヒープダンプを解析してGC Rootから対象までの強い参照経路を参照経路の解析結果として示します。

出典:[4]

向いている用途

開発中のAndroidアプリで再現操作と原因箇所を結び付ける

debug依存関係として追加すると、開発端末で画面操作を再現した後に通知と解析結果を確認できます。画面遷移やライフサイクルに伴うリークを、単なるメモリ増加ではなく参照元まで追いたいチームに向きます。

出典:[3][1]

導入前の確認

debugビルドの診断結果を手掛かりとして確認する

ヒープ解析には時間と保存領域が必要で、保持されたオブジェクトがすべて不具合とは限りません。固定コミットのサンプルはminSdk 24、compileSdk 36、Android Gradle Plugin 9.2.1、JDK 17、Gradle wrapper 9.6.1を使います。リポジトリ内のサンプルをデバッグ用にビルドし、リリース成果物とは分けて評価してください。

出典:[10][11][7]

参考にした公式資料

  1. [1]LeakCanary README at commit 1aa85dc(2026-10-05)
  2. [2]LeakCanary v3.0-alpha-9 release(2026-10-05)
  3. [3]LeakCanary getting started(2026-10-05)
  4. [4]LeakCanary fundamentals(2026-10-05)
  5. [5]LeakCanary GitHub metadata(2026-10-05)
  6. [6]LeakCanary Apache license at commit(2026-10-05)
  7. [7]LeakCanary fixed sample debug dependencies and Android configuration(2026-10-05)
  8. [8]LeakCanary fixed sample MainActivity leak actions(2026-10-05)
  9. [9]LeakCanary fixed sample button labels(2026-10-05)
  10. [10]LeakCanary fixed SDK and AGP versions(2026-10-05)
  11. [11]LeakCanary fixed Gradle wrapper(2026-10-05)
編集部からの補足

Androidの画面遷移後に残るオブジェクトを参照経路まで追いたい開発チーム向けです。debugビルドと検証端末に限定し、解析結果を再現操作やコード変更と照合してください。

3ステップで試す

  1. 1

    固定版の要件と導入箇所を確認する

    Git、JDK 17、Android SDK 36が必要です。固定コミットを取得し、minSdk 24とcompileSdk 36を確認します。ビルドは同梱のGradle Wrapper 9.6.1とAndroid Gradle Plugin 9.2.1を使います。

    git clone https://github.com/square/leakcanary.git leakcanary && cd leakcanary && git checkout --detach 1aa85dc0472d6e38966a649741a7ce30f828d162 && test "$(sed -n 's/androidMinSdk = "\([0-9]*\)"/\1/p' gradle/libs.versions.toml)" = 24 && test "$(sed -n 's/androidCompileSdk = "\([0-9]*\)"/\1/p' gradle/libs.versions.toml)" = 36
  2. 2

    リポジトリ内のデバッグ用サンプルをビルドして導入する

    接続済み端末またはエミュレーターへ、projects.leakcanary.leakcanaryAndroidをdebugImplementationで参照済みのサンプルをビルドしてインストールします。公開リリース版への依存関係は追加しません。

    ./gradlew :samples:leakcanary-android-sample:installDebug
  3. 3

    Leak Activityで保持を作り、画面を破棄して解析結果を見る

    Example Appで「Leak Activity」を押してから「Finish」でMainActivityを破棄します。ヒープダンプ通知を開き、保持元から対象までの参照経路の解析結果を確認します。

    adb shell am start -n com.example.leakcanary/.MainActivity && printf '%s\n' 'On the device: tap "Leak Activity", then "Finish" to destroy MainActivity. Wait for the LeakCanary heap-dump notification, open it, and inspect the reference-path analysis.'
公式READMEで確認

成長

成長の推移 · 直近30日

30,005 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
81
Open PR
15

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • android
  • memory-leak
  • java
  • kotlin
  • kotlin-android
  • outofmemory
  • outofmemoryerror
  • leakcanary
  • leak-canary
  • leak-trace
Stars
30,005
Forks
3,994
Watchers
977
Open Issues
115
Contributors
145
所有者種別
Organization
主要言語
Kotlin
ライセンス
Apache-2.0
リポジトリ最終更新
2026/10/05

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?