console.log가 활성화 될 때마다 다음 코드를 사용하면 o.big에서 참조하는 문자열이 가비지 수집되지 않습니다. 로깅 문을 제거하자마자 핸들러 함수의 실행이 끝난 후에 큰 문자열에 대한 메모리가 해제됩니다.Firefox console.log로 인해 JavaScript가 가비지 수집을 방해합니까?
Firefox 9.0.1을 사용 중이며 about : memory로 메모리 프로파일 링을 수행했습니다.
$(function() {
var handler = function() {
var o = {};
o.big = (new Array(20*1024*1024)).join("x");
console.log(o.big);
delete o.big;
};
$("#btn").click(handler);
});
나는 자바 스크립트 비교적 새로운 오전 CONSOLE.LOG 내에서 사용하는 경우 문자열이 GC에 의해 표시되지 않는 이유 누군가가 나에게 지적 할 수 있다면 그것은 좋은 것입니다.
수동으로 또는 console.clear()를 호출하여 방화 광 콘솔을 지우시겠습니까? 그렇지 않다면 메모리가 손실되는 곳을 생각할 수 있습니다. – jAndy
@jAndy : console.clear()를 추가하거나 수동으로 콘솔을 지우는 것이 효과가있는 것 같지 않습니다. 나는 지금 막 firefox 웹 콘솔을 사용하고있다. 메모리 할당은 여전히 about : memory에 "40.07 MB (33.74 %) - string-chars"로 표시됩니다. 또한 about : memory UI를 통해 수동으로 gc 스위프를 실행하고있었습니다 – mzu
100 % 확신 할 수는 없지만 'console'이'eval'을 사용하여 그것의 작업을 수행한다고 생각합니다. 따라서 변수는 전역 객체에 저장 될 것이므로 결코 GC에 적합하지 않습니다. – jabclab