多次运行后javascript崩溃

多次运行后javascript崩溃,javascript,garbage-collection,webgl,Javascript,Garbage Collection,Webgl,我有一个WebGL画布,其中包含大约90k个顶点,然后是一些“活动”文件,基本上在每个“时间步”告诉每个vertice应该有什么颜色。此活动分为若干“块”,每个块存储在单独的文件中。在一个文件中的活动结束后,我阅读了新文件,如: activitiesData = null; activitiesData = nextActivitiesFileData.slice(0); 这里,nextractivitiesfiledata由ajax调用异步读取。现在所有这些在第一次运行时都可

我有一个WebGL画布,其中包含大约90k个顶点,然后是一些“活动”文件,基本上在每个“时间步”告诉每个vertice应该有什么颜色。此活动分为若干“块”,每个块存储在单独的文件中。在一个文件中的活动结束后,我阅读了新文件,如:

    activitiesData = null;
    activitiesData = nextActivitiesFileData.slice(0);
这里,
nextractivitiesfiledata
由ajax调用异步读取。现在所有这些在第一次运行时都可以正常工作,有时甚至可以运行更多的运行,但是在第2次->第10次运行间隔的某个地方,它崩溃了。 现在,我假设这是由于使用的非常大的数据不知何故没有足够快地被丢弃。我一直试图谨慎地使用
var
,并将不需要的数组分配给
null


我能做些什么来“帮助”垃圾收集过程吗?这次崩溃可能是其他性质的吗?

如果我理解你的问题,你有GPU上的数据释放速度不够快的问题吗

有两种方法可以释放WebGL API分配的内存。 如果通过gl.createBuffer()创建WebGLBuffer对象,则只有当javascript对象被垃圾收集时(不再有对该对象的任何引用),实际的缓冲区才会自动释放,但这个过程很难预测

根据最新的规范,大多数WebGL对象类型都有“删除器”,以使程序员能够更好地控制内存。 当不再需要缓冲区时,尝试调用
void deleteBuffer(WebGLBuffer?buffer)
方法


然而如果您碰巧遇到CPU内存不足的问题,我为这个不相关的回答道歉。

当您说“崩溃”时,您是指整个浏览器崩溃并关闭吗?或者您的意思是页面中的javascript由于javascript错误而停止运行?浏览器正常,只有javascript停止运行,webgl画布变为全黑。浏览器是否在错误控制台或调试控制台中报告任何JS错误?未报告任何JS错误。但是,根据运行脚本的机器的FPS和处理器,对于性能非常高的机器,浏览器也会崩溃,并且崩溃速度会更快,这让我觉得JS使用的内存占用速度过快,垃圾收集也没有跟上。你应该在适当的站点报告浏览器错误,