我有一个WebGL应用程序,它处理了大量的数据。在IE11上,我遇到了内存快速耗尽的问题(Chrome和Firefox没有这个问题)。然而,当我创建一些测试代码来隔离泄漏的原因时,测试代码也会在Chrome上泄漏。进一步的测试显示,即使是Chrome在实际应用程序中也会泄漏,但似乎不会像IE11那样崩溃。
以下是展示问题的测试代码的fiddle链接: EXAMPLE 基本上,我是使用以下方式创建缓冲区:
然而,如 jsfiddle 测试代码所示,删除缓冲区似乎并没有释放浏览器使用的内存。即使缓冲区被删除,内存也会很快耗尽。
这只是一个虚构的例子,但它确实反映了我的做法(即创建缓冲区,然后再删除它们),但随着时间的推移,这样做似乎导致内存无法被释放。
我应该如何释放这个内存以避免泄漏?有任何想法吗?
以下是展示问题的测试代码的fiddle链接: EXAMPLE 基本上,我是使用以下方式创建缓冲区:
var buffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(gl.ARRAY_BUFFER, bufferData, gl.STATIC_DRAW);
gl.bindBuffer(gl.ARRAY_BUFFER, null);
我创建每个缓冲区时,也会相应地调用delete操作来删除它(在必要时):
gl.deleteBuffer(buffer);
然而,如 jsfiddle 测试代码所示,删除缓冲区似乎并没有释放浏览器使用的内存。即使缓冲区被删除,内存也会很快耗尽。
这只是一个虚构的例子,但它确实反映了我的做法(即创建缓冲区,然后再删除它们),但随着时间的推移,这样做似乎导致内存无法被释放。
我应该如何释放这个内存以避免泄漏?有任何想法吗?