leakcanary
最新的2.x只需要在build.gradle里面集成即可,这玩意是检测java层内存泄露的
dependencies { debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7' }
当安装完毕集成了leancanary的app后,会在手机桌面上同时安装一个新的app
这是为你app的专属leaks,打开leaks,dump heap now
实际发现这玩意并不能很好的检测到c++的内存泄露问题
其他
- AddressSanitizer(ASan): 内存地址越界检查(其实包括了内存泄漏检查)
- LeakSanitizer(LSan): 内存泄漏检查,可以单独使用
- UndefinedBehaviorSanitizer (UBSsan): 未定义行为检查
- ThreadSanitizer (TSan): 线程安全检查
- MemorySanitizer (MSan): 内存分配检查
以上这些工具都是clang/clang++编译器自带的,他们位于llvm项目的一个子项目Sanitizer中。
Address Sanitizer
Address Sanitizer从 API 级别 27 (Android O MR 1) 开始,Android NDK 可支持 Address Sanitizer(也称为 ASan)。
项目使用的NDK R15C,不太行这种办法
compileSdkVersion 29 # 高于27 buildToolsVersion '26.0.2' useLibrary 'org.apache.http.legacy' defaultConfig { applicationId "com.caohua.tank5" minSdkVersion 14 # 低于27 targetSdkVersion PROP_TARGET_SDK_VERSION versionCode 1 versionName "1.0"
LeakTracer
只能用于Android内存泄露检测,不能用于Window