直接用 Memory Profiler 的分配记录功能可精准追踪对象创建的时间、位置和调用栈;需确保 debuggable="true"、USB 调试开启,优先分析 Java 层,冷启动后录制操作,再通过调用栈、包过滤及堆转储交叉验证泄漏风险。
直接用 Memory Profiler 的“分配记录(Allocation Tracking)”功能,就能精准追踪对象创建的时间、位置和调用栈——不需要加日志,也不依赖猜测。
确保应用运行在调试模式下(debuggable="true"),且设备已启用 USB 调试。Android Studio 4.2 及以上版本支持 Java/Kotlin 对象的实时分配捕获;Native 对象需额外配置 NDK 符号表,一般开发中优先聚焦 Java 层。
AndroidManifest.xml 中 application 标签是否包含 android:debuggable="true"
进入 Memory Profiler 后,点击右上角 Record memory allocations(或图标为两个重叠方块的按钮),执行你想分析的操作(如打开一个页面、快速滑动列表),10–20 秒后点击停止。Profiler 会生成一份按时间排序的对象分配列表。
Bitmap、ArrayList、自定义 ViewHolder)不是所有频繁创建都等于问题,但以下模式值得立刻检查:
如果分配记录发现某个类创建频繁,但不确定它是否滞留内存,可立即做一次 Heap Dump:点击 Capture heap dump,等几秒生成快照后,在左侧 Class List 中搜索该类名,查看 “Instances” 数量是否持续增长、是否有非预期的强引用链(如被静态 Map 持有)。