- 文档首页
应用性能监控全链路版
用户指南
客户端监控
App 端监控
最佳实践
使用内存泄漏监控和泄漏兜底服务
使用内存泄漏监控和泄漏兜底服务
本文以Android App应用为例,介绍App应用接入与使用内存泄漏的完整流程。
- 在project级别的build.gradle文件中,添加maven地址。
url "https://artifact.bytedance.com/repository/Volcengine/"
url "https://artifact.bytedance.com/repository/byteX/"
url "https://artifact.bytedance.com/repository/Volcengine/"
- 在project级别的build.gradle文件的dependencies中,添加以下代码,接入插件组件辅助插桩。apm_insight_plugin 国内海外使用同一个版本。
classpath "com.volcengine:apm_insight_plugin:1.4.2"
- 在app module的build.gradle文件的dependencies中,添加以下代码,根据国内应用还是海外应用选择下面两个版本的一个。
- 国内应用接入cn版本,上报到中国,使用如下依赖:
implementation 'com.volcengine:apm_insight:1.5.6.cn'
implementation 'com.volcengine:apm_insight_crash:1.5.9'
- 海外应用接入oversea版本,上报到马来西亚柔佛,使用如下依赖:
implementation 'com.volcengine:apm_insight:1.5.7.oversea'
implementation 'com.volcengine:apm_insight_crash:1.5.8.oversea'
- 在Application中onCreate中,添加以下代码,初始化性能相关功能。
注意
请在主线程中添加初始化性能相关功能的代码。
ApmInsight.getInstance().init(application);
注意
请在用户同意隐私政策后,再调用方法收集数据。
ApmInsightInitConfig.Builder builder = ApmInsightInitConfig.builder();
builder.detectActivityLeak(new IActivityLeakListener() {
public void onActivityLeaked(Activity activity) {
ApmInsight.getInstance().start(builder.build());
- 在app module的build.gradle文件最外层,添加以下代码,完成插桩。
- 启动分析和页面体验相关功能依赖插件插桩,需配置ApmPlugin的whiteList为自己的包名,配置后该目录下的代码会被插桩。
httpUrlConnectionSwitch = true
端上开启泄漏检测和泄漏兜底处理开关后,平台也可以控制泄漏检测和泄漏兜底处理,泄漏兜底处理依赖泄漏检测。详细操作步骤,请参见SDK上报配置。 - 在控制台左上角选择全部功能 > SDK上报配置。
- 总开关打开会根据采样配置上报数据,关闭则整个模块不会上报数据。
-
- 选择配置项为内存泄漏检测采样率,然后单击创建配置,修改采样率。
- 选择配置项为内存泄漏兜底采样率,然后单击创建配置,修改采样率。
-
- 内存泄漏检测采样率 :控制内存泄漏兜底方案是否开启泄露检测
- 内存泄露兜底采样率:控制内存泄漏兜底方案是否进行泄露兜底
说明
请谨慎开启内存泄露兜底采样率,并逐渐增加采样率。兜底操作会把view的背景图置空,防止有不当逻辑在Activity onDestroy后依然有操作view背景图产生异常。
端上检测到泄露事件后,如果判断平台配置了泄露事件上报,会把泄露的Activity名称上报到平台,这样平台就可以查看哪个页面泄露的次数较多。但因为泄露引用链需要dump内存才能解析出来,性能影响较大,这里并不不会dump内存快照解析泄露引用链,只是作为泄露的监控指标。具体泄露引用链可以通过接入OOM崩溃时候dump内存解析出泄露排查问题。
- 在筛选区域单击Android系统,然后单击新增事件。
-
- 在筛选区域单击Android系统,以及其他业务相关的筛选项。
- 在左侧上报量页签中,单击泄漏事件名称apmplus_activity_leak_monitor,选择维度leak_activity,然后在维度列表中单击维度名称leak_activity。
- 在详情页面查看leak_activity指标泄漏详情。
-
如果Android客户端实现的需求有不当的代码实现,就会导致Activity泄漏。Activity的泄漏会牵连一系列的对象,特别是各种View和他们的背景图Bitmap会占据大量的内存,是内存泄漏非常重要的占比。泄漏分析支持检测上报Activity泄露情况,还可以兜底Activity泄露导致的内存泄露,即断掉View对图片的引用,减少泄露内存。
最近更新时间:2026.02.10 19:56:26