Lo he escuchado y lo he experimentado yo mismo: el recolector de basura de Lua puede causar caídas graves de FPS en los juegos a medida que crece la parte de sus guiones.¿Por qué Lua usa un recolector de basura en lugar de contar la referencia?
Esto es lo que descubrí relacionado con el recolector de basura, donde, por ejemplo, todos los objetos userdata Vector() creados se encuentran temporalmente hasta que se recoge la basura.
Sé que Python utiliza el recuento de referencias, y es por eso que no necesita grandes pasos para comer como Luas GC.
- ¿Por qué Lua no utiliza el recuento de referencias para deshacerse de la basura?
No hay problemas con FPS en Lua 5.1 siempre y cuando configure correctamente el recolector de basura incremental. –
De hecho, el problema real es la velocidad de fotogramas inestable causada por la operación diferida/ráfaga, no la caída del fotograma. El GC completo per-tick o el GC incremental/concurrente pueden disminuir mucho este tipo de operaciones, pero no completamente. La operación de ráfaga puede ser causada si la memoria no es suficiente para mantener las guardas arriba. (o crash :) – Eonil