2013-08-07 3 views
4

나는 하루 종일 이미 검색을했기 때문에 서버에 많은 ajax-jsonp 요청을 사용하는 내 phonegap 애플리케이션에서 큰 메모리 누수가 발생하는 이유를 찾을 수 없다.JSONP Ajax Call with JQuery가 메모리 누수를 야기한다.

따라서 가장 간단한 예를 들었습니다. 당신은 그것을 here on jsfiddle 찾을 수 있습니다.

그것의 주요 내용은 다음과 같습니다

function run(){ 
    $.ajax({ 
     dataType: 'jsonp', 
     url: "http://thawing-bayou-7281.herokuapp.com/test.js", 
     success: function (res) { 
      // some stuff here 
      setTimeout(run, 250); 
     } 
    }); 
}; 
run(); 

그래서이 코드는 JSONP API 요청 끝없는 시간 250ms마다 호출합니다.

참고 : 나는 이것이 결코 구현되지 않을 것이라는 것을 알고 있습니다. 그냥 메모리 누수를 탐지하기위한 것입니다.

이 예제를 실행하면 사용 된 메모리가 빠르게 증가합니다 (Chromes Timeline Tab에서 가장 잘 볼 수 있습니다). enter image description here DOM 노드의 수가 빠르게 증가하고 있습니다. 어떤 시점에서 분해됩니다 (일부 GC?)하지만 요소와 필요한 메모리가 빠르게 증가합니다.

누구든지이 문제를 해결하는 방법에 대해 알고 계셨습니까?

감사합니다.

답변

4

이것은 메모리 누출이 아니며 자바에서 톱니 형 그래프가 일반적입니다. 메모리 사용량이 증가하고 가비지 컬렉터가 호출되면서 삭제됩니다. 보여준 그래프는 그런 상황을 나타냅니다.

그래프의 낮은 지점이 지속적으로 증가하여 그래프에 표시되지 않으면 메모리 누수가 발생합니다.

+0

Java ?! 거기에 JavaScript가 있다고 생각하세요, 친구! Java는 또한 가비지 컬렉션을 가지고 있습니다 ... – drewsberry

+0

이런 식으로 Java와 Javascript도 비슷하게 작동합니다. –