Estoy trabajando en un juego de HTML 5, ya está en línea, pero actualmente es pequeño y todo está bien.Descarga de recursos en HTML con JavaScript
La cosa es, a medida que crece, va a cargar muchas, muchas imágenes, música, efectos de sonido y más. Después de 15 minutos de juego, al menos 100 recursos diferentes ya se pudieron haber cargado. Como es una aplicación HTML5, nunca refresca la página durante el juego, por lo que se acumulan en segundo plano.
Me he dado cuenta de que cada recurso que cargué, al menos en WebKit, usando Web Inspector, permanece allí una vez que elimino el <img>
, <link>
en el CSS y demás. Supongo que todavía está en la memoria, simplemente no se usa, ¿verdad?
Esto acabaría consumiendo mucha RAM eventualmente, y conduciría a una degradación en el rendimiento especialmente en los móviles iOS y Android (que ya noté ligeramente en la versión actual), cuyos recursos son más limitados que las computadoras de escritorio.
Mi pregunta es: ¿Es posible descargar por completo un recurso, liberando espacio en la memoria RAM, a través de JavaScript? Sin tener que actualizar toda la página para "limpiarla".
Peor escenario: ¿Usaría marcos ayuda, al eliminar un marco, para liberar esos marcos de recursos ?.
¡Gracias!
Una cosa que podría intentar hacer es establecer el manejador de recursos correspondiente en 'null'.Mientras el recurso ya no esté referenciado desde ningún lugar, la memoria que usa debe ser recolectada por el motor de JavaScript –
. ¡Voy a probar eso! ¡Gracias! ¿Te importa compartir conmigo un enlace con ejemplos sobre cómo acceder a los recursos que el navegador ha cargado? Me está costando encontrar eso en Google =/ – ArtPulse
En Firefox y Chrome, el recolector de basura parece ejecutarse cuando se cambia a otra pestaña. No estoy seguro de lo útil que esto es para ti, pero si el usuario no juega continuamente, deberías estar bien confiando en el recolector de basura. – pimvdb