Skip to main content

Android Native 内存触顶

Native内存使用监控一直是Android平台的难点,Google也出了很多工具,但是基本都只提供给本地调试使用。另外,很多工具使用的时候都会遇到很多问题,例如兼容性、闪退等等。

Bugly专业版的Native内存触顶是拦截进程的内存分配和释放情况,抓取内存分配的函数调用栈信息。在进程的内存(Pss或者Vss)达到一定阈值的时候,会将这些还没有释放的内存分配和函数调用栈信息上报给服务器,用户可以通过控制管理台来检索和分析这些内存触顶的问题。

SDK初始化

Native内存触顶监控,默认是不开启的,需要用户在初始化SDK时,主动添加到需要开启的监控项中。SDK的初始化,详细见《Android SDK接入指引》

...
buglyBuilder.addMonitor("native_memory"); // 添加Native内存触顶监控
...
Bugly.init(application, buglyBuilder); // 初始化Bugly

配置开启

SDK初始化添加监控项后,还需要调整配置,通过设置/SDK配置,开启Native内存触顶监控。

  • sample_ratio,设备采样率,表示允许多少比例的设备开启相关监控项。
  • event_sample_ratio,事件采样率,用来控制,当发生内存触顶时(VSS或者PSS触顶),dump内存进行数据上报的采样率。

Native内存触顶

重要提醒

要开启Native内存触顶功能,需要检查以下项:

  1. 初始化SDK时,通过BuglyBuilder.addMonitor接口,添加"native_memory"监控项。
  2. 通过设置/SDK配置,开启Native内存触顶监控。

Native内存触顶,需要hook内存分配与释放接口,并采样采集内存分配堆栈,内存触顶发生时,会采样dump内存进行数据上报,对性能有一些影响,请谨慎设置采样率。

我们推荐在开发版,或者少量用户的灰度版,采样开启使用。

Native内存触顶