Скопировано из этого ответа: Собирается ли мусор WebGLTextures?
со словом WebGLTexture
, замененным на WebGLObject
Да и нет.
Да, они мусор. Но сборка мусора происходит всякий раз, когда браузер решает собрать их. Судя по POV большинства JavaScript-движков браузера, объект WebGLObject
представляет собой крошечный объект, который просто содержит int
, поэтому у него нет простого способа узнать о каком-либо особом давлении для его сбора. Другими словами, когда у GPU заканчивается память, сборщик мусора JavaScript, который не имеет связи с GPU, не может знать, что ему нужно освободить эти крошечные WebGLObject
объекты, чтобы освободить память текстур. Он только смотрит на память процессора.
На самом деле это хорошо известная проблема сбора мусора. Это здорово для памяти. Это не так хорошо для других ресурсов.
Так что, да, WebGLObject
объекты собирают мусор, и да, текстура / буфер / renderbuffer / program / shader будет освобождена, но практически вам нужно удалить их самостоятельно, еслиВы не хотите исчерпывать память.
Конечно, браузер освободит их всех, если вы обновите страницу или посетите новую страницу в той же вкладке, но вы не можете рассчитывать на браузер мусорасобирать WebGLObject
объекты (текстуры / буферы / рендер-буферы / программы / шейдеры) любым полезным способом.