(相关资料图)
背景介绍
性能测试是 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 主要内存占用。