Solía ser que nuestro uso de JavaScript tenía varias fuentes de pérdidas de memoria. Desde entonces, hemos abordado> 80% de esas filtraciones. Aún no hemos terminado y esperamos eliminar el resto de las filtraciones, pero ahora debería poder detectar una mejora notable.
Para aquellos que tienen curiosidad, utilizamos una combinación de inspección de código, instrumentación manual y el generador de perfiles de montón de Google Chrome para encontrar los problemas en nuestro código. Aquí hay una muestra de los problemas encontrados:
- Teníamos un montón de lugares donde estábamos dejando datos innecesarios en el montón, por lo que limpiarlos ayudó a reducir el uso de memoria.
- Estábamos usando llamadas nativas del navegador para eliminar objetos del DOM en lugares donde usar jQuery sería más apropiado, porque jQuery también limpiaría cualquier dato que haya almacenado en caché con el objeto. No parece que esto sea necesario si no usa jQuery para almacenar datos arbitrarios con objetos, pero resulta que jQuery usa esta abstracción de almacenamiento de datos para almacenar cosas como controladores de eventos que se vinculan a objetos en el DOM .
- También teníamos algunas referencias a objetos DOM dando vueltas, evitando que los árboles DOM separados se recolectaran correctamente. Con algunas modificaciones, pudimos arreglar esas referencias colgantes o al menos mantener el tamaño del árbol DOM separado al mínimo hasta que tengamos la oportunidad de hacerlo.
- Del mismo modo, teníamos algunos objetos de JavaScript que pensábamos que estaban bien y que recolectaban basura de forma natural. Pero, de hecho, no fueron recogidos por el recolector de basura, presumiblemente debido a una referencia colgante en alguna parte. El tamaño resultante de los objetos dominados y retenidos resultó ser bastante grande. En esos casos, romper cadenas de referencias explícitamente, aunque no abordaba la causa raíz, ayudó a abordar algunos de los síntomas de la fuga al mantener pequeño el tamaño retenido.
- Entre RAM y ROM, ¿cuál tiene más capacidad de almacenamiento? ¿Por qué?
- Puede FIFA 17 o FIFA 16 se ejecuta en Intel Graphics 4400,4 gb ram, i3 4a generación, 3,75 ghz. ¿Por favor conteste?
- ¿Puedo enviar partes de chips de computadora (memoria de computadora: RAM, en este caso) sin usar materiales de envío antiestáticos?
- ¿Funcionará realmente un pen drive como RAM?
- ¿Cómo mueve un disco duro los datos a la RAM?