Ich habe eine einfache NodeJs-Anwendung, die als REST-Client fungiert und ein großes JSON-Objekt anfordert. Das Problem ist, dass der Speicher immer knapp ist (mehr als 6 GB). Ich benutze manuelle Speicherbereinigung (App gestartet mit --expose_gc), aber das scheint nicht viel zu helfen.Das Anfordern großer JSON-Objekte führt zu einem Speicherleck.
Hier ist mein Code:
var needle = require('needle');
function getAllData() {
getDataFromUrl("http://puppygifs.tumblr.com/api/read/json");
getDataFromUrl("http://puppygifs.tumblr.com/api/read/json");
getDataFromUrl("http://puppygifs.tumblr.com/api/read/json");
getDataFromUrl("http://puppygifs.tumblr.com/api/read/json");
getDataFromUrl("http://puppygifs.tumblr.com/api/read/json");
setInterval(function() {
getAllData();
}, 10 * 1000);
}
function getDataFromUrl(url) {
needle.get(url, function (error, response) {
if (!error && response.statusCode == 200) {
console.log("do something");
}
});
}
function scheduleGc() {
global.gc();
setTimeout(function() {
scheduleGc();
}, 100 * 1000);
}
getAllData();
scheduleGc();
I Anfrage Bibliothek versucht haben, aber ich hatte die gleichen Ergebnisse. Was mache ich falsch?
Ps.s. Meine nodejs-Version ist 6.9.1, Nadelversion 1.3.0
Die JSON ist nicht 6Gb, es viel weniger ist. Die 6Gb war die Menge an verwendetem RAM aufgrund der Tatsache, dass ich setInterval anstelle von setTimeout verwendete ... – Jkam