Entonces, estoy pasando el búfer de video (búfer Float32Array) al subproceso de trabajo como un objeto transferible, sucede para cada cuadro del video (es decir, los cuadros de video se pasan continuamente al trabajador). Hice un perfil de memoria y el subproceso de trabajo retiene el objeto, parece que el recolector de basura no se activa. ¿Cómo manejar este caso? No creo que uno pueda invocar GC explícitamente en JavaScript.
Aquí está el fragmento de código de cómo paso el búfer de video al subproceso de trabajo:
this.worker.postMessage({ command: 'SetVideoBuffer', data: { videoFrame: videoFrame } }, [videoFrame.buffer]);
Además, intenté configurar el búfer en el lado del trabajador en 'nulo', no ayudó.
¿Alguna idea de cómo resolver esto, es esta cosa de cromo? Por favor ayuda.
¡Gracias!
Entonces, obtuve la solución a este problema, parece que si uno devuelve el búfer de video al hilo principal donde se creó, GC se activa y limpia el montón.
Al usar la misma forma de copia cero (objetos transferibles), transfirí el búfer nuevamente al hilo principal, el problema de pérdida de memoria se resolvió.