我有一个结合 Windows phone 8.1 SDK 的 VoIP 应用程序。
每次我调用VoipBackgroundProcess.Launch() 以在后台启动 VoIP 进程,并调用 VoipPhoneCall.NotifyCallActive()来通知系统我的 VoIP 呼叫处于活动状态时,我都会使用 Windows.System.MemoryManager.AppMemoryUsage 来检查应用程序的内存使用情况在我调用该函数之前和之后。
在我的测试中,调用该函数后,内存使用量总是会立即增加大量内存。512MB ram lumia 设备上的示例:
- VoipBackgroundProcess.Launch() :内存使用量增加 51 MB
- VoipPhoneCall.NotifyCallActive() :内存使用量增加 100 MB
除此之外,我的应用程序还做了很多与内存相关的工作,例如渲染图像或媒体消息,但内存限制只有 180 MB(从 Windows.System.MemoryManager.AppMemoryUsageLimit 获取),很容易出现内存异常并让我的应用崩溃。
在 Windows phone 8.0 SDK 上组合我的应用程序时,我会做同样的事情,但是当我获得内存使用情况(来自 Microsoft.Phone.Info.DeviceStatus.ApplicationCurrentMemoryUsage)时,它不会像 Windows phone 8.1 SDK 那样占用内存。
有人知道为什么在 Windows phone 8.1 SDK 上调用 VoIP api 时系统会占用大量内存吗?