JavaScript

Truco: Forzar el recolector de basura en Node

En los programas con un gran consumo de memoria es posible que el recolector de basura entre a funcionar en el peor momento, produciendo que el programa se pueda parar temporalmente. Por eso, llamar al recolector de basura cuando no hay tareas puede aumentar el rendimiento. En JavaScript, a diferencia de otros lenguajes como R en los que existe la función gc(), no existe un método para llamar al recolector de basura directamente. Pero afortunadamente, sí que es posible forzar el recolector de basura en Node con un truco.

Forzar el recolector de basura en Node en un programa

Para poder llamar al recolector de basura en un programa de Node es necesario ejecutar este con la opción --expose-gc ya que esta no es una funcionalidad de JavaScript. Eso es, si se desea llamar al recolector de basura desde la aplicación app.js esta se debe de ejecutar de la siguiente manera

node --expose-gc app.js

Ahora dentro del programa, para instalar al recolector de basura se debe escribir el comando global.gc(). Lo que parará la ejecución del código para recuperar toda la memoria que ya no está en uso. El problema de este comando es que, en el caso de que no se incluya la opción --expose-gc producirá un error en tiempo de ejecución, por lo que es una buena idea comprobar si la función se encuentra disponible antes de llamarla escribiendo algo como if (global.gc) global.gc().

Si el programa lo van a lanzar otros usuarios puede ser una buena idea lanzar una advertencia indicando que no se puede realizar esta tarea para que lo inicie de forma adecuada. Lo que se puede conseguir con algo como:

if (global.gc) {
  global.gc();
} else {
  console.warn(`Para llamar al recolector de basura inicie el programa como 'node --expose-gc app.js'.`);
}

Conclusiones

En esta ocasión se ha visto un truco para llamar al recolector de basura en Node, algo que usado correctamente puede evitar más de un problema en los programas que requieren el uso de bastante memoria.

Imagen de Theodor Moise en Pixabay

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: NodeTruco

Recent Posts

Errores comunes al interpretar resultados estadísticos

La estadística no suele fallar en los cálculos: falla en la interpretación. El test está…

3 días ago

Dashboard CLV: cuatro modelos, un mismo dataset, conclusiones muy distintas

Los artículos anteriores de esta serie cubrieron cuatro formas de mirar el valor del cliente:…

5 días ago

Curiosidad: Por qué la criptografía habla siempre de Alice y Bob

Quien se acerca a la criptografía descubre enseguida a dos personajes que aparecen en casi…

1 semana ago

Desbalanceo de Clases en Credit Scoring: Por Qué Usamos Ponderación en lugar de Undersampling

En credit scoring el desbalanceo de clases es la norma, no la excepción. En una…

2 semanas ago

Curiosidad: El “bug”, la polilla y la leyenda de Grace Hopper

Cualquiera que programe usa la palabra bug a diario para referirse a un fallo en…

2 semanas ago

BG/BB: el modelo de CLV para compras en períodos discretos

Los dos artículos anteriores de la serie cubrieron BG/NBD, el modelo para negocios donde el…

3 semanas ago

This website uses cookies.