javascript - 使用多个 ScriptProcessor 和 Analyzer 节点时 Chrome 崩溃

标签 javascript google-chrome crash web-audio-api scriptprocessor

我正在构建一个网络应用程序,允许用户改进网络音频合成器( https://gensynth.ou.edu/#/evolve )。然而,在 Chrome 上,每当您在 mutation amount 一直调高并在进化过程中点击刷新几次时,应用程序就会意外崩溃(该选项卡仅显示“aw snap”崩溃屏幕) )。

当合成器加载时,它会通过连接到静默增益节点的脚本处理器和分析器节点进行播放,以便它可以渲染出初始频谱图(最初尝试使用离线上下文来实现此目的,但这只是严重制动)。然后,当用户单击演奏乐器时,它会通过一组不同的脚本/分析器节点进行演奏。随后的每次播放,振荡器和滤波器都会重新生成并连接到同一组脚本/分析器节点。

每当较旧的脚本节点尝试进行垃圾收集时,它似乎就会崩溃,因为当我尝试保留对节点的引用并且不将其 onaudioprocess 函数设置为 null 时,这种情况发生的频率会降低(这确实会击中内存力很难)。有更好或更标准的方法吗?

我并不完全清楚要在这篇文章中放入什么代码,因为大多数时候只有当所有内容都放在一起时才会出现这个问题。使用脚本/分析器节点的主要小部件是 here .

在 Firefox 中运行良好,如果有任何其他信息对我提供有帮助,请告诉我。

编辑:仅隔离this page上的可视化器代码,您可以通过单击几次 new x30 按钮来获得崩溃(尽管频率较低)。

最佳答案

更新到 chrome 40 后,我还没有看到这个问题出现。我假设它是由已修复的内存损坏或网络音频错误之一引起的( http://googlechromereleases.blogspot.com/2015/01/stable-update.html )

关于javascript - 使用多个 ScriptProcessor 和 Analyzer 节点时 Chrome 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26793578/

相关文章:

javascript - 在窗口调整大小时使用 Javascript 更改 div 宽度太麻烦

html - 图像的移动自动缩放

javascript - Chrome 在 ckeditor 中使用 insertHtml 跳过 contenteditable 属性

iphone - 地址簿导致崩溃的电话号码(+45)前缀!

iphone - NSInternalInconsistencyException 无法在包中加载 Nib

javascript - Ajax 调用 HTML 表

javascript - 是否可以使用 google maps api autocomplete.getPlace() 而无需将其放入 place_changed 监听器中?

javascript - 同级 div 的替代背景色

javascript - Chrome /IE : 'mousemove' event triggered every couple of seconds with no movement/scroll/etc

xcode - 钛 sdk - [TiUtils isIOS9OrGreater] : unrecognized selector sent to class 0x1006f7610