node.js의 JavaScript 아래에서 실행되는 동안 의심 스럽습니다.처리되지 않은 거부 참조 보유
var z = new Image();
function x()
{
var promise = new Promise();
return promise;
}
var promise = x();
promise.then(function(){});
..........
promise.reject(z);
x()가 반환 한 약속에 리 젝트 처리기가 추가되지 않았습니다. 그러나 어떤 시점에서 응답 값 z로 거부 값을 보내는 경우 z가 가비지 수집 될 것인지 아니면 처리되지 않은 거부로 인해 z가 참조되는지 여부가 유지됩니다. 그러나 catch/reject 처리기를 추가하면 z에 대해 가비지 수집이 발생합니다.
처리되지 않은 거부에 전달 된 Z에 대해 가비지 수집이 발생하지 않는 이유를 명확히 설명하십시오.
'z'는 모듈의 최상위 레벨에서 인스턴스화되기 때문에 파일에 전역적인 것처럼 보입니다. 즉, 글로벌 장소에 여전히 참조가 있기 때문에 가비지 수집되지 않습니다. 가비지 수집에 대한 자세한 내용은 여기를 참조하십시오. (https://strongloop.com/strongblog/node-js-performance-garbage-collection/) – peteb