Nur zum Spaß und um nodejs auszuprobieren, habe ich ein sehr, sehr einfaches Programm geschrieben, das die Collatz-Vermutung auf eine absurde Menge an Zahlen testet. Dies sollte theoretisch gut sein. Das Problem, das ich habe, ist, dass dieser super einfache Code ein Speicherleck hat und ich kann nicht warum feststellen.Speicherlecks in der einfachen nodejs App
var step;
var numberOfSteps;
for (var i = 0; i < 100000000000000; i++) {
step = i;
numberOfSteps = 0;
while (step !== 1) {
if (step%2 === 0)
step /= 2;
else
step = 3 * step + 1;
numberOfSteps++;
}
console.log("" + i + ": " + numberOfSteps + " steps.");
}
Ich habe die Variablen sowohl innerhalb als auch außerhalb der Schleife versucht. Ich habe versucht, sie am Ende der Schleife auf Null zu setzen. Nichts ändert das Speicherleck.
Wo ist das Leck? Ich versuchte es auf meinem Computer und mein Speicher erhöhte nur weniger als 0,01G – Turtle
gibt es kein Leck ... aber die while-Schleife ist ** unendlich ** für Schritt === 0 ... obwohl, wenn Sie das Problem beheben, Knoten scheint langsam Speicher zu verschlingen, nicht wahr –
Es ist die 'console.log', die es verursacht - es ist fast so, als ob der GC nicht in der Lage wäre, den vom console.log zurückgelassenen Müll zu bereinigen –