문제

웹 서비스에서 큰 XML 응답으로 작업하고 있습니다. URL을 사용하려고 할 때, 얼마 후 Firebug에 "스크립트 스택 공간 할당량이 소진 된"오류가 표시됩니다. "어떻게 해결할 수 있습니까?

도움이 되었습니까?

해결책

그것 소리 XML을 처리 할 때 약간의 재귀가 진행되고있는 것처럼, 이는 본질적으로 스택 오버플로 (모든 이름으로)를 유발합니다.

생각 :

  • 적은 데이터로 작업합니다
  • 데이터를 수동으로 처리하는 경우 덜 재귀를 사용해보십시오. 아마도 수동 테일 콜 또는 큐/스택 기반 일 것입니다
  • JSON을 고려하십시오. 그러면 스크립트 호스트에 오프로드하여 추가 처리없이 객체를 재수 화 할 수 있습니다.

다른 팁

Firebug를 비활성화해 보셨습니까?

Firefox 3에서 사용 가능한 스택 공간은 4MB에서 ~ = 640KB로 떨어졌습니다 (여기에서 입소문을 전달합니다).

FF3를 실행하고 있습니까?

https://bugzilla.mozilla.org/show_bug.cgi?id=420874

나는 비슷한 문제가 있었을 것입니다. jQuery $ (html)로 거대한 HTML 덩어리를 구문 분석하려고하면 발생할 수 있습니다.

내 테스트에서 이것은 Windows의 Firefox 3.6.16에서만 발생했습니다. 우분투의 Firefox 4.0.1은 훨씬 더 잘 행동했습니다. 아마도 OS와 관련이 없을 것입니다. 4.x의 스크립트 엔진 만 훨씬 좋습니다 ..

해결책 : 대신

var $divRoot = $(html);

나는했다

var $temp = $('<div style="display:none;">');  // .appendTo($('body'));  // (*)
$temp.html(html);  // using the client's html parsing
var $divRoot = $('> div', $temp);  // or .children() or whatever
// $temp.remove();  // (*)

(*) jQuery가 선택기를 적용하기 전에 온도 노드를 본체에 추가해야한다는 것을 기억합니다. 그러나이 경우에는 그 없이는 잘 작동하는 것처럼 보였습니다.

FF 4.X에는 전혀 차이가 없었지만 FF 3.X의 스택 공간 오버플로 오류를 피할 수있었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top