2016-03-28 5 views
0

Webオーディオでは、MediaElementSourceノードをガベージコレクションするトリックはありますか?WebオーディオMe​​diaElementSourceノードがガベージコレクトされていません

MediaElementSourceとOscillatorの2つのノードを追加するページを設定しました。これらの両方を切断すると、直ちにオシレータがガベージコレクションされますが、MediaElementSourceは永続的に保持されます。 (これは、Firefoxのウェブオーディオ開発ツールによるもので、オーディオグラフを視覚化しています。)

Mac(ヨセミテ)のChromeとFirefoxの両方でこれが発生しています。

なぜMediaElementSourceノードが永続的に残っているのですか?ページをリロードしたり、オーディオコンテキストを強制終了したりすることなく、それを取り除く方法はありますか?

<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> 

答えて

0

GCがガベージコレクションの対象であることがわかるように、varをヌルにしてください。

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

私はこれを試しても問題は解決しません。奇妙な、ええ? – suncannon

関連する問題