Pergunta

Eu estou trabalhando com uma grande resposta XML de um serviço web. Quando eu tentar conseguir que o uso de uma URL, depois de algum tempo ele exibe um erro no Firebug que "quota roteiro espaço de pilha está esgotada" Como posso resolver isso?

Foi útil?

Solução

sons que há alguns recursão acontecendo quando o processamento do xml, que é, essencialmente, causando um estouro de pilha (por qualquer nome).

Pensamentos:

  • trabalho com menos dados
  • se você estiver processando os dados manualmente, tente usar menos recursão? tail-call talvez manual ou fila / pilha com base
  • considerar json - então você pode descarregar para o host de script para reidratar o objeto sem qualquer processamento extra

Outras dicas

Você tentou desativar o Firebug?

A partir do Firefox 3, o espaço de pilha disponível caiu de 4MB a ~ = 640KB (eu estou passando na palavra da boca aqui).

Por acaso você estar executando FF3?

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

Eu tive um problema semelhante, talvez o mesmo. Isso pode acontecer se você tentar analisar uma enorme pedaço de html com jQuery $ (html).

Em meus testes isso só aconteceu no Firefox 3.6.16 no Windows. Firefox 4.0.1 no Ubuntu se comportou muito melhor. Provavelmente nada a ver com o sistema operacional, apenas o mecanismo de script em 4.x é muito melhor ..

Solução: Em vez de

var $divRoot = $(html);

Eu fiz

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();  // (*)

(*) Lembro-me de que, em alguns casos, você precisa adicionar o nó temporário para o corpo, antes jQuery pode aplicar quaisquer seletores. No entanto, neste caso, parecia funcionar muito bem sem isso.

Não havia absolutamente nenhuma diferença em FF 4.x, mas que permitem evitar o espaço de erro estouro de pilha no FF 3.x.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top