首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从解码的音频流中清理内存的正确方法(移动)

从解码的音频流中清理内存的正确方法(移动)
EN

Stack Overflow用户
提问于 2016-06-09 15:01:49
回答 1查看 229关注 0票数 1

我正在使用WebAudio播放音乐曲目。首先,我用以下命令完全解码

代码语言:javascript
复制
self.ctx.decodeAudioData(xhr.response, function (buffer) {
    this.cache = buffer;
})

并将解码后的缓冲区保存到某个变量中,以备我需要开始播放它时使用。

当我想切换音轨时,我会用以下命令清理音频节点

代码语言:javascript
复制
node.source.onended = function (value) {
    node.source = null;
};

而缓存中包含:

this.cache = null;

并将下一首曲目解码为相同的变量。

问题是,如果我切换几次曲目是快速连续的(比如3-4个3分钟的曲目),基于iOS的移动浏览器只是重新加载页面,因为看起来,我已经占用了所有可用的内存。虽然我只使用了一个缓冲区变量,但我猜垃圾收集器不会释放我不再使用的音频缓冲区的内存。

有什么想法可以改进实现吗?

EN

回答 1

Stack Overflow用户

发布于 2017-08-09 03:12:48

事实证明,问题出在垃圾收集器上。之前的记忆需要20-30秒才能真正清除。所以解决方案对我有效-我开始播放曲目,并禁用切换到另一首曲目的能力30秒。有足够的时间让内存清理所有东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37718951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档