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.
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'.`);
} 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
La independencia financiera es el punto en el que tus inversiones generan suficientes rendimientos para…
Tienes dos grupos de datos y quieres saber si son estadísticamente distintos. O tienes una…
A primera vista, tuplas y listas son casi idénticas. Ambas guardan colecciones ordenadas de elementos.…
"Nuestros datos no tienen buena calidad." Escuchas esto constantemente en reuniones. El problema es que…
El artículo Data Leakage en Credit Scoring explicó por qué este es el error más…
Antes de aplicar muchos tests estadísticos clásicos (el t-test, el ANOVA, la regresión lineal) aparece…
This website uses cookies.