进程模式与性能优化指南
IMLib SDK 支持单进程和多进程两种模式,默认使用单进程模式。单进程模式下,IMLib SDK 和 App 运行在同一个进程中;多进程模式下,IMLib SDK 运行在独立的进程中。
单进程模式的特点:
- 所有组件在同一进程中,对象可以直接引用,无需序列化/反序列化,便于调试和跟踪。
- 无进程间通信开销,组件间直接调用,延迟低。
- 出现崩溃、内存泄漏以及 ANR 时会影响全局,内存上限受限于单进程。
多进程模式的特点:
- 组件间调用需要序列化/反序列化,延迟高,调试和跟踪不便。
- 组件间相互独立,内存隔离,崩溃、内存泄漏以及 ANR 影响局部。
- 可以突破单进程内存上限限制,充分利用多核 CPU 资源。
Tips:目前大多数手机设备的内存分配对于一般 App 的使用场景基本够用,在单进程下运行通常不会出现内存不足的问题。
内存使用对比
指标 | 单进程 | 多进程 |
---|---|---|
基础内存 | 低 | 高 |
内存隔离 | 无 | 有 |
内存泄漏影响 | 全局 | 局部 |
内存上限 | 512MB-1GB | 可突破限制 |
性能对比
指标 | 单进程 | 多进程 |
---|---|---|
启动速度 | 快 | 慢 |
响应延迟 | 低 | 中等 |
并发处理 | 差 | 好 |
资源利用 | 中等 | 高 |
稳定性对比
指标 | 单进程 | 多进程 |
---|---|---|
崩溃影响 | 全局 | 局部,不影响主进程 |
ANR影响 | 全局 | 局部 |
内存泄漏 | 全局 | 局部 |
进程恢复 | 简单 | 复杂 |
App 在后台时 SDK 的限制问题
连接状态限制
- 网络连接: 后台时网络连接可能被系统限制或断开。
- 心跳机制: 心跳包发送频率受限,可能导致连接超时。
- 重连机制: 自动重连任务可能被系统阻止或延迟。
电池优化限制
- Doze 模式: 深度睡眠模式限制网络和CPU
- App Standby: 应用待机模式限制后台活动