debug = true in web.config = coisa má?

Estamos a ver muita fragmentação de memória virtual e sem erros de memória e depois atinge o limite de 3GB.

a depuração da compilação é verdadeira na web.config mas eu recebo respostas diferentes de todos que eu pergunto, o debug definido para verdadeiro causa cada aspx para compilar em áreas aleatórias de ram, assim fragmentando essa ram e eventualmente causando fora de problemas de memória?

Author: Canavar, 2009-03-07

5 answers

Scott Guthrie (director do ASP.NET equipe de desenvolvimento) tem um post interessante sobre isso .

Os pontos mais importantes por que você não deve deixar debug= "true" são:

  1. a compilação de ASP.NET as páginas demoram mais (dado que algumas optimizações em lote estão desactivadas)
  2. o código pode executar mais lentamente (dado que alguns locais de depuração adicionais estão activos)
  3. muito mais memória é usada dentro da aplicação no tempo de execução
  4. programas e imagens obtidos da WebResources.AXD handler não é Cache pelo navegador, resultando em mais solicitações entre cliente e servidor
Ele também menciona a bandeira na máquina.configuração, que permite substituir globalmente a depuração = bandeira" true " de todas as aplicações rodando em uma máquina (por exemplo, em um servidor de produção).

Atualização : a implantação de aplicações web com debug="true" ainda é má, como pode ler no recente post de blog de Scott Hanselman:

Eis porque depurar="true" é mau. A sério, não estamos a brincar.
  • Sobrepõe-se ao pedido de tempo-limite de execução tornando-o efectivamente infinito
  • desactiva as optimizações do compilador de páginas e JIT
  • em 1.1, leva a uma utilização excessiva da memória pela CLR para o registo de informações de depuração
  • em 1.1, desliga a compilação em lote de páginas dinâmicas, levando a uma montagem por página.
  • para VB.NET código, leva ao uso excessivo de Fracasferências (usado para editar e continuar suportar).

Uma nota importante: ao contrário do que às vezes se acredita, definir varejo = "verdadeiro"em um elemento não é um antídoto direto para ter depuração="verdadeiro"!

 74
Author: M4N, 2010-05-18 21:33:25

A opção de depuração deve ser configurada como false na web.configuração, a menos que precise de depurar a aplicação.

Correr no modo de depuração pode aumentar um pouco o uso da memória, mas não é provável que seja um caso tão grave como está a falar. No entanto, você deve configurá-lo como falso para elliminar o efeito que ele tem, e ver se você pode notar alguma melhoria.

Quando executado no modo de depuração, a colecção de lixo funciona de forma diferente. O tempo de vida das variáveis é expandido de é o uso real para o escopo da variável (para ser capaz de mostrar o valor no depurador). Isso faz com que alguns objetos vivam mais tempo antes de serem coletados lixo.

O compilador não optimiza o código ao compilar no modo de depuração, e também algumas instruções extra {[[0]} são adicionadas para que cada linha de código tenha pelo menos uma instrução onde um ponto de paragem possa ser colocado.

Abrir uma excepção demora consideravelmente mais tempo no modo de depuração. (No entanto, normalmente, o código não deve abrir excepções com frequência.)

 11
Author: Guffa, 2009-03-07 10:09:01
Pode afectar a memória, basta ver alguns dos contadores perfmon e fazer uma comparação com ambas as configurações.

Se o seu site tem um monte de arquivos eu estaria mais preocupado com o disco io no asp.net pasta temporária.

Algumas Perguntas...
    Tem muitos ficheiros no seu código de aplicações? Está a permitir que o site seja actualizado ou está a publicá-lo?
  1. Em caso afirmativo, o sítio está a ser actualizado com frequência ou existe uma processo de implantação?
  2. Qual é a configuração do hardware?
Porque não utilizar múltiplas configurações? Web.Depurar.Configuração-ter a depuração ligada Site.ALCADA.Configuração-Qualquer que seja a sua preferência Site.Lancar.Configuração-ter a depuração desligada

Desta forma, poderá minimizar os erros de configuração de regressão, como um programador a verificar uma web.configuração com depuração= "true"

 4
Author: sqlray, 2010-05-18 22:11:26

AFAIK "debug = true" não causa a situação que mencionou.

Eu tinha enfrentado o mesmo problema com um ASP.NET aplicação que criou imagens no momento. Então, acho que tens um problema com recursos não eliminados.

Se você implantar os seus ficheiros aspx com ficheiros por trás do código para o servidor. Ele será compilado uma vez quando o pedido vem para um aspx. em seguida, ele será armazenado no cache até que o arquivo muda.

 3
Author: Canavar, 2009-03-07 09:33:29

Nos sistemas de produção, definir sempre Debug=false. Como o flag sugere, ele só deve ser definido como verdadeiro quando depurar um sistema de desenvolvimento.

Esta bandeira não tem nada a ver com o teu problema de fragmentação da memória.
 0
Author: David, 2010-05-18 21:51:18