2

다음은 자바 스크립트 코드의 개체 및 전역 네임 스페이스입니다.자바 스크립트는 가비지 수집을 삭제하거나 사용합니까?

1) Users.Cache.data = {}; // 가비지 컬렉션은 메모리에서 제거하기 위해 처리합니다 :

Users.Cache.data = { x:'1', y:'2', z:'3'};

나는 데이터의 모든 항목을 지우려면

, 나는 2 가지 방법이있다. 특정 접근 방식이 더 나은 경우

2) for(i in Users.Cache.data){ delete(Users.Cache.data[i]; }

누구나 댓글 수 기준으로 다음 사항을 고려하십시오 가) 메모리 누수 (처럼 보이는없는 어느 쪽도 메모리 누수의 문제) B) 성능을 가지고있다.

+0

걱정해야 할 것 같지 않습니다. 단순히 첫 번째 옵션 만 수행하면됩니다 (반복 할 필요 없음). 가비지 컬렉터는 그 일을 어느 방향에서나 할 것입니다. – PeeHaa

+0

시도해보십시오. http://perfectionkills.com/understanding-delete/#theory 및 this http://docstore.mik.ua/orelly/webprog/jscript/ch11_03.htm –

답변

4

사실 실제로 delete을 사용하면 여전히 가비지 수집에 의존합니다. GC를 위해 더 많은 작업을 수행합니다.

delete x.y을 호출해도 메모리가 해제되지 않습니다. 그것은 단지 xy에 대한 참조를 삭제합니다.
y에 다른 참조가 없으면 루핑되지 않고 최종 가비지 수집이 가능해집니다.

두 번째 옵션은 GC가 통과 할 수 있도록 루핑되지 않은 추가 참조를 만듭니다.
(실제로 아무 것도 측정하지 않았습니다.)

+1

좋은 답변입니다. 여기에 자세한 내용이 나와 있습니다. http :// /docstore.mik.ua/orelly/webprog/jscript/ch11_03.htm –

+0

섹션 11.3.2 무시. – SLaks

+0

답변 해 주셔서 감사합니다. – sbr

관련 문제