我正在构建一个网络应用程序,允许用户改进网络音频合成器( 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/