2014-10-02 1 views
1

"form"과 "form.errorProcessor"는 서로에 대한 단일 참조 만 보유하고 메모리에 2 개의 객체 만 있거나 이로 인해 누출/문제가 발생합니까?object1이 object1의 속성 인 object2의 속성으로 - 메모리 누수가 발생합니까?

var ErrorProcessor = function(form){ 
    this.form = form; // Problem Line 
} 
var form = $("form"); 
form.errorProcessor = new ErrorProcessor(form); // Some element assignment 

찾는 문제 라인, I는 다음과 같이 오브젝트 계층을

형태 [CONSOLE.LOG (형태)에 의해 확인] {errorProcessor {형태 {errorProcessor {형태 {errorProcessor : {...}}}}}}

답변

2

아니요, 순환 참조로 인해 메모리 누수가 발생하지 않으며 코드에 두 개의 개체 만 만듭니다. 괜찮은 가비지 컬렉터가 처리 할 수 ​​있습니다.

유일한 문제는 (콘솔에서 속성을 확장하는 것처럼) 반복적으로 개체를 검사 할 때 밑바닥이 안되는 점입니다. 프로그래밍 방식으로 끝나면 재귀에서 무한 루프 나 스택 오버플로가 발생합니다 . 콘솔에서 볼 수있는 이러한 구조는 모두 동일한 객체를 나타냅니다.

관련 문제