Webrtc MediaStreamAudioSourceNode内存泄漏
Webrtc MediaStreamAudioSourceNode内存泄漏,webrtc,web-audio-api,web-frontend,Webrtc,Web Audio Api,Web Frontend,MediaStreamAudioSourceNode在disconnect()和函数demoMemoryLeak()中取消引用后将不会被垃圾收集,这可能会导致内存泄漏 参考: 源(MediaStreamAudioSourceNode)--->at(MediaStreamTrack)--->buffer1(10M阵列缓冲) 是否有正确的方法来释放MediaStreamAudioSourceNode 标题 没有内存泄漏 使用MediaStreamAudioSourceNode的内存泄漏 异步函数
MediaStreamAudioSourceNode
在disconnect()
和函数demoMemoryLeak()
中取消引用后将不会被垃圾收集,这可能会导致内存泄漏
参考:
源(MediaStreamAudioSourceNode)--->at(MediaStreamTrack)--->buffer1(10M阵列缓冲)
是否有正确的方法来释放MediaStreamAudioSourceNode
标题
没有内存泄漏
使用MediaStreamAudioSourceNode的内存泄漏
异步函数demonemoryleak(){
设ctx=newaudiocontext();
设buffer1=newarraybuffer(10*1024*1024);
let stream=wait navigator.mediaDevices.getUserMedia({audio:true,video:false});
let at=stream.getAudioTracks()[0];
at.onended=()=>{
console.log(buffer1);
};
设置超时(()=>{
at.stop();
log('buffer1是垃圾收集的');
}, 5000);
}
异步函数demoMemoryLeak(){
设ctx=newaudiocontext();
设buffer1=newarraybuffer(10*1024*1024);
let stream=wait navigator.mediaDevices.getUserMedia({audio:true,video:false});
let at=stream.getAudioTracks()[0];
at.onended=()=>{
console.log(buffer1);
};
让source=ctx.createMediaStreamSource(流);
source.connect(ctx.destination);
设置超时(()=>{
source.disconnect();
source=null;
at.stop();
log('buffer1未被垃圾收集');
}, 5000);
}
断开连接后,您没有关闭音频上下文,这可能会对您有所帮助
ctx.close()