(相关资料图)

背景介绍

性能测试是 SDK 发版的重要依据,VolcRTC 的业务方对于性能指标都比较重视,对于 RTC 准入有明确的准入标准。因此我们建立了线下的性能自动化测试系统,测试过程中我们发现 VolcRTC 的内存占用较高存在较大的优化空间。某个版本 1v1 语音通话 VolcRTC 1v1 语音通话内存占用:

占用的资源Memory[MB]
Android 高端机17.87
Android 中端机17.58
Android 低端机16.06
iOS 高端机6.19
iOS 中端机6.52
iOS 低端机5.73

为了实现内存优化,首先需要理清两个问题:

哪些模块消耗多少内存?如何优化?

内存组成

在回答以上两个问题之前,我们先了解下内存的主要组成部分有哪些。

在 Android 系统上,内存主要分为:

Java Heap,从 Java 代码分配的对象;通话过程中 Java 内存的分布曲线,主要呈锯齿状的周期性变化。结合 VolcRTC 的业务特点,可以知道这部分内存主要在 JNI 调用时分配临时对象,累计到一定程度后由系统的 GC 机制回收。Native Heap,从 C 或 C++ 代码分配的对象。这部分为 VolcRTC 主要内存占用。

推荐内容