나는 다음 코드를 사용하여 메모리 누수보고 있어요 : 나는 문자열을 정의하고 단지 상수를 사용하여 시도했다node.js 파일의 메모리 누출?
while (true) {
console.log("Testing.");
}
을,하지만 여전히 메모리 누수 :
var test = "Testing.";
while (true) {
console.log(test);
}
같은 누출을 표준 로그 대신 파일을 사용하는 경우 발생합니다.
var test = "Testing.";
var fh = fs.createWriteStream("test.out", {flags: "a"});
while (true) {
fh.write(test);
}
파일을 제대로 닫지 않았기 때문에 내가 생각한 것일 수도 있지만 까지 누출을 보았다 :
var test = "Testing";
while (true) {
var fh = fs.createWriteStream("test.out", {flags: "a"});
fh.end(test);
fh.destroy();
fh = null;
}
사람이 내가 메모리가 누수없이 일을 쓰기로되어있어 방법에 대한 힌트가 있습니까?
파일 처리기 ('fs.createWriteStream')로 솔루션을 재현 할 수 있었지만'console.log'로 시도해도 여전히 메모리 누수가 발생합니다. 'function writeConsole() {console.log ("test"); if (typeof (gc) == "function") gc(); process.nextTick (writeConsole); } writeConsole();' 위의 코드 블록을'node test.js'와 함께 실행하면 모든 반복마다 내 메모리 사용 풍선이 보입니다. 'node --expose-gc test.js'로 실행할 때, 나는 상수 증가가 보이지 않습니다. – facetious
@facetious : GC 사이클을 너무 자주 수행하지 않으면 비효율적입니다. 잠시 동안 실행하면 메모리 사용량이 결국 시작 레벨로 떨어지는 것을 확인할 수 있습니다. – thejh
@facetious : 나는 심지어 그 자신을 실험 해 보았습니다. gnuplot을 사용하여 메모리 사용량 그래프를 만들었습니다. 올바르게 기억한다면, 항상 더 많은 시간을 얻은 다음 대략 시작 값으로 떨어졌습니다. – thejh