├── .gitattributes ├── .gitignore ├── LeakcanarySample ├── .classpath ├── .project ├── .settings │ └── org.eclipse.jdt.core.prefs ├── AndroidManifest.xml ├── proguard-project.txt ├── project.properties ├── res │ ├── drawable-hdpi │ │ └── ic_launcher.png │ ├── drawable-mdpi │ │ └── ic_launcher.png │ ├── drawable-xhdpi │ │ └── ic_launcher.png │ ├── drawable-xxhdpi │ │ └── ic_launcher.png │ ├── layout │ │ ├── activity_main.xml │ │ ├── activity_main2.xml │ │ └── fragment_main2.xml │ ├── values-w820dp │ │ └── dimens.xml │ └── values │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml └── src │ └── com │ └── leakcanary │ └── example │ ├── BaseFragment.java │ ├── DebugMApplication.java │ ├── LeakUploadService.java │ ├── MApplication.java │ ├── Main2Activity.java │ └── MainActivity.java ├── README.md └── leakcanarylib ├── .classpath ├── .project ├── .settings └── org.eclipse.jdt.core.prefs ├── AndroidManifest.xml ├── libs └── haha-2.0.2.jar ├── lint.xml ├── proguard-project.txt ├── project.properties ├── res ├── drawable-hdpi-v11 │ └── leak_canary_notification.png ├── drawable-hdpi │ ├── leak_canary_icon.png │ └── leak_canary_notification.png ├── drawable-mdpi-v11 │ └── leak_canary_notification.png ├── drawable-mdpi │ ├── leak_canary_icon.png │ └── leak_canary_notification.png ├── drawable-xhdpi-v11 │ └── leak_canary_notification.png ├── drawable-xhdpi │ ├── leak_canary_icon.png │ └── leak_canary_notification.png ├── drawable-xxhdpi-v11 │ └── leak_canary_notification.png ├── drawable-xxhdpi │ ├── leak_canary_icon.png │ └── leak_canary_notification.png ├── drawable-xxxhdpi-v11 │ └── leak_canary_notification.png ├── drawable-xxxhdpi │ ├── leak_canary_icon.png │ └── leak_canary_notification.png ├── drawable │ └── leak_canary_toast_background.xml ├── layout │ ├── leak_canary_display_leak.xml │ ├── leak_canary_heap_dump_toast.xml │ ├── leak_canary_leak_row.xml │ ├── leak_canary_ref_row.xml │ └── leak_canary_ref_top_row.xml ├── values-v14 │ └── leak_canary_themes.xml ├── values-v21 │ └── leak_canary_themes.xml └── values │ ├── leak_canary_int.xml │ ├── leak_canary_strings.xml │ └── leak_canary_themes.xml └── src ├── com └── squareup │ ├── haha │ └── perflib │ │ └── HahaSpy.java │ └── leakcanary │ ├── AbstractAnalysisResultService.java │ ├── ActivityRefWatcher.java │ ├── AnalysisResult.java │ ├── AndroidDebuggerControl.java │ ├── AndroidExcludedRefs.java │ ├── AndroidHeapDumper.java │ ├── AndroidWatchExecutor.java │ ├── CanaryLog.java │ ├── DebuggerControl.java │ ├── DisplayLeakService.java │ ├── ExcludedRefs.java │ ├── GcTrigger.java │ ├── HahaHelper.java │ ├── HeapAnalyzer.java │ ├── HeapDump.java │ ├── HeapDumper.java │ ├── KeyedWeakReference.java │ ├── LeakCanary.java │ ├── LeakNode.java │ ├── LeakTrace.java │ ├── LeakTraceElement.java │ ├── Preconditions.java │ ├── RefWatcher.java │ ├── ServiceHeapDumpListener.java │ ├── ShortestPathFinder.java │ └── internal │ ├── DisplayLeakActivity.java │ ├── DisplayLeakAdapter.java │ ├── DisplayLeakConnectorView.java │ ├── FutureResult.java │ ├── HeapAnalyzerService.java │ ├── LeakCanaryInternals.java │ ├── LeakCanaryUi.java │ └── MoreDetailsView.java └── org └── eclipse └── mat ├── SnapshotException.java ├── collect ├── ArrayInt.java ├── ArrayIntBig.java ├── ArrayIntCompressed.java ├── ArrayLong.java ├── ArrayLongCompressed.java ├── ArrayUtils.java ├── BitField.java ├── HashMapIntLong.java ├── HashMapIntObject.java ├── HashMapLongObject.java ├── IteratorInt.java ├── IteratorLong.java ├── PrimeFinder.java ├── QueueInt.java └── SetInt.java ├── hprof ├── AbstractParser.java ├── ArrayDescription.java ├── HprofHeapObjectReader.java ├── HprofIndexBuilder.java ├── HprofParserHandlerImpl.java ├── HprofRandomAccessParser.java ├── IHprofParserHandler.java ├── Messages.java ├── Pass1Parser.java ├── Pass2Parser.java └── extension │ ├── IParsingEnhancer.java │ └── IRuntimeEnhancer.java ├── inspections └── CommonNameResolver.java ├── parser ├── IIndexBuilder.java ├── IObjectReader.java ├── IPreliminaryIndex.java ├── index │ ├── IIndexReader.java │ ├── IndexManager.java │ ├── IndexReader.java │ └── IndexWriter.java ├── internal │ ├── DominatorTree.java │ ├── GarbageCleaner.java │ ├── PreliminaryIndexImpl.java │ ├── SnapshotFactory.java │ ├── SnapshotImpl.java │ ├── SnapshotImplBuilder.java │ ├── StackFrameImpl.java │ ├── ThreadStackHelper.java │ ├── ThreadStackImpl.java │ ├── snapshot │ │ ├── MultiplePathsFromGCRootsComputerImpl.java │ │ ├── ObjectCache.java │ │ ├── ObjectMarker.java │ │ ├── PathsFromGCRootsTreeBuilder.java │ │ └── RetainedSizeCache.java │ └── util │ │ ├── IntStack.java │ │ └── ParserRegistry.java ├── io │ ├── BitInputStream.java │ ├── BitOutputStream.java │ ├── BufferedRandomAccessInputStream.java │ ├── PositionInputStream.java │ └── SimpleBufferedRandomAccessInputStream.java └── model │ ├── AbstractArrayImpl.java │ ├── AbstractObjectImpl.java │ ├── ClassImpl.java │ ├── ClassLoaderImpl.java │ ├── InstanceImpl.java │ ├── ObjectArrayImpl.java │ ├── PrimitiveArrayImpl.java │ ├── XGCRootInfo.java │ └── XSnapshotInfo.java ├── snapshot ├── DominatorsSummary.java ├── ExcludedReferencesDescriptor.java ├── IMultiplePathsFromGCRootsComputer.java ├── IPathsFromGCRootsComputer.java ├── ISnapshot.java ├── MultiplePathsFromGCRootsClassRecord.java ├── MultiplePathsFromGCRootsRecord.java ├── PathsFromGCRootsTree.java ├── SnapshotFormat.java ├── SnapshotInfo.java ├── extension │ ├── IClassSpecificNameResolver.java │ ├── Subject.java │ └── Subjects.java ├── model │ ├── Field.java │ ├── FieldDescriptor.java │ ├── GCRootInfo.java │ ├── IArray.java │ ├── IClass.java │ ├── IClassLoader.java │ ├── IInstance.java │ ├── IObject.java │ ├── IObjectArray.java │ ├── IPrimitiveArray.java │ ├── IStackFrame.java │ ├── IThreadStack.java │ ├── NamedReference.java │ ├── ObjectReference.java │ ├── PrettyPrinter.java │ ├── PseudoReference.java │ └── ThreadToLocalReference.java └── registry │ └── ClassSpecificNameResolverRegistry.java └── util ├── IProgressListener.java ├── MessageUtil.java ├── SilentProgressListener.java ├── SimpleMonitor.java ├── SimpleStringTokenizer.java └── VoidProgressListener.java /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Files for the Dalvik VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Generated files 12 | bin/ 13 | gen/ 14 | 15 | # Gradle files 16 | .gradle/ 17 | build/ 18 | 19 | # Local configuration file (sdk path, etc) 20 | local.properties 21 | 22 | # Proguard folder generated by Eclipse 23 | proguard/ 24 | 25 | # Log Files 26 | *.log 27 | 28 | # ========================= 29 | # Operating System Files 30 | # ========================= 31 | 32 | # OSX 33 | # ========================= 34 | 35 | .DS_Store 36 | .AppleDouble 37 | .LSOverride 38 | 39 | # Thumbnails 40 | ._* 41 | 42 | # Files that might appear on external disk 43 | .Spotlight-V100 44 | .Trashes 45 | 46 | # Directories potentially created on remote AFP share 47 | .AppleDB 48 | .AppleDesktop 49 | Network Trash Folder 50 | Temporary Items 51 | .apdisk 52 | 53 | # Windows 54 | # ========================= 55 | 56 | # Windows image file caches 57 | Thumbs.db 58 | ehthumbs.db 59 | 60 | # Folder config file 61 | Desktop.ini 62 | 63 | # Recycle Bin used on file shares 64 | $RECYCLE.BIN/ 65 | 66 | # Windows Installer files 67 | *.cab 68 | *.msi 69 | *.msm 70 | *.msp 71 | 72 | # Windows shortcuts 73 | *.lnk 74 | -------------------------------------------------------------------------------- /LeakcanarySample/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /LeakcanarySample/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | LeakcanarySample 4 | 5 | 6 | 7 | 8 | 9 | com.android.ide.eclipse.adt.ResourceManagerBuilder 10 | 11 | 12 | 13 | 14 | com.android.ide.eclipse.adt.PreCompilerBuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.jdt.core.javabuilder 20 | 21 | 22 | 23 | 24 | com.android.ide.eclipse.adt.ApkBuilder 25 | 26 | 27 | 28 | 29 | 30 | com.android.ide.eclipse.adt.AndroidNature 31 | org.eclipse.jdt.core.javanature 32 | 33 | 34 | -------------------------------------------------------------------------------- /LeakcanarySample/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 3 | org.eclipse.jdt.core.compiler.compliance=1.6 4 | org.eclipse.jdt.core.compiler.source=1.6 5 | -------------------------------------------------------------------------------- /LeakcanarySample/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 12 | 13 | 19 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 34 | 37 | 38 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 55 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /LeakcanarySample/proguard-project.txt: -------------------------------------------------------------------------------- 1 | # To enable ProGuard in your project, edit project.properties 2 | # to define the proguard.config property as described in that file. 3 | # 4 | # Add project specific ProGuard rules here. 5 | # By default, the flags in this file are appended to flags specified 6 | # in ${sdk.dir}/tools/proguard/proguard-android.txt 7 | # You can edit the include path and order by changing the ProGuard 8 | # include property in project.properties. 9 | # 10 | # For more details, see 11 | # http://developer.android.com/guide/developing/tools/proguard.html 12 | 13 | # Add any project specific keep options here: 14 | 15 | # If your project uses WebView with JS, uncomment the following 16 | # and specify the fully qualified class name to the JavaScript interface 17 | # class: 18 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 19 | # public *; 20 | #} 21 | -------------------------------------------------------------------------------- /LeakcanarySample/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-22 15 | android.library.reference.1=../leakcanarylib 16 | -------------------------------------------------------------------------------- /LeakcanarySample/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teffy/LeakcanarySample-Eclipse/10f59396a5a9e826b6090f8b483aef1a4ed3a52f/LeakcanarySample/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /LeakcanarySample/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teffy/LeakcanarySample-Eclipse/10f59396a5a9e826b6090f8b483aef1a4ed3a52f/LeakcanarySample/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /LeakcanarySample/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teffy/LeakcanarySample-Eclipse/10f59396a5a9e826b6090f8b483aef1a4ed3a52f/LeakcanarySample/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /LeakcanarySample/res/drawable-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teffy/LeakcanarySample-Eclipse/10f59396a5a9e826b6090f8b483aef1a4ed3a52f/LeakcanarySample/res/drawable-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /LeakcanarySample/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 11 | 12 |