2016-03-28 22 views
0

Web ses sisteminde MediaElementSource düğümlerinin çöp toplanmasını sağlamak için bir numara var mı?Web ortamı MediaElementSource düğümü çöp toplanmıyor

İki düğüm ekleyen bir sayfa hazırladım: bir MediaElementSource ve bir Osilatör. Her ikisini de ayırdığımda, Osilatör kısa bir süre sonra toplanan çöptür, ancak MediaElementSource kalıcı olarak kalır. (Bu, ses grafiğini görselleştiren Firefox web ses dev araçlarına göre değişir.)

Bunu hem Chrome'da hem de Firefox'ta Mac'te (Yosemite) yaşıyorum.

MediaElementSource düğümü neden kalıcı olarak kalıyor ve sayfayı yeniden yüklemeden veya ses bağlamını etkilemeden kurtulmanın bir yolu var mı?

<audio src="gam2.mp3" id="audio" controls></audio> 
<button onclick="disc()">disconnect</button> 

<script> 

    var actx = new AudioContext() 

    var audio = document.getElementById("audio") 
    var stream = actx.createMediaElementSource(audio) 
    stream.connect(actx.destination) 

    var sine = actx.createOscillator() 
    sine.connect(actx.destination) 

    function disc() { 
     audio.remove() 
     stream.disconnect() 
     sine.disconnect() 
    } 

</script> 

cevap

0

Var'larınızı boşaltma işlemini deneyin, böylece GC, çöp toplama için uygun olduklarını bilir.

function disc() { 
    audio.remove() 
    stream.disconnect() 
    stream = null 
    sine.disconnect() 
    sine = null //doing this here for consistency 
} 
+0

Bunu denedim ve sorunu çözmüyor. Garip, ha? – suncannon