debug=true в web.config = ПЛОХАЯ вещь?

Вы можете попробовать что-то вроде:

InputStream stream = this.getClass().getClassLoader().getResourceAsStream("/images/image.jpg");

В вашем JAR-файле у вас может быть структура каталогов:

MyJAR.jar-com (файлы классов здесь) - images ---- image.jpg

52
задан Canavar 7 March 2009 в 09:36
поделиться

5 ответов

Это абсолютно может повлиять на память, просто взгляните на некоторые счетчики perfmon и сравните их с обеими конфигурациями.

Если на вашем сайте много файлов, меня больше интересует диск io во временной папке asp.net.

Пара вопросов ...

  1. У вас много файлов в вашем App_Code?
  2. Разрешаете ли вы обновлять сайт или публикуете его?
  3. Если да, то сайт часто обновляется или есть процесс развертывания?
  4. Какая конфигурация оборудования?

Почему бы не использовать несколько конфигураций?

Web.Debug.Config - Включена ли отладка Web.UAT.Config - Независимо от ваших предпочтений Web.Release.Config - Отладка отключена

Таким образом можно свести к минимуму ошибки конфигурации регрессии, например, когда разработчик проверяет файл web.config с помощью debug = "true"

4
ответ дан 7 November 2019 в 09:21
поделиться

В производственных системах всегда устанавливайте Debug = false. Как подсказывает флаг, значение true следует устанавливать только при отладке системы разработки.

Этот флаг не имеет ничего общего с вашей проблемой фрагментации памяти.

0
ответ дан 7 November 2019 в 09:21
поделиться

Флаг отладки должен иметь значение false в web.config, если Вы на самом деле не должны отлаживать приложение.

Выполнение в режиме отладки может увеличить использование памяти несколько, но это - маловероятный случай как серьезные проблемы, поскольку Вы говорите о. Однако необходимо установить его на ложь для устранения эффекта, который это имеет, и посмотрите, можно ли заметить какое-либо улучшение.

, Когда выполнено в режиме отладки, сборка "мусора" работает по-другому. Время жизни переменных расширено от, он - фактическое использование к объему переменной (чтобы быть в состоянии показать значение в отладчике). Это делает некоторые объекты живыми дольше, прежде чем они будут собраны "мусор".

компилятор не оптимизирует код при компиляции в режиме отладки и также немного дополнительных nop, инструкции добавляются так, чтобы каждая строка кода имела по крайней мере одну инструкцию, куда точка останова может быть помещена.

Выдача исключения берет значительно дольше в режиме отладки. (Однако обычно код не должен выдавать исключения настолько часто.)

13
ответ дан Guffa 7 November 2019 в 19:21
поделиться

AFAIK "отладка = верный" не вызывают ситуацию, которую Вы упомянули.

я столкнулся с той же проблемой с приложением ASP.NET, которое создало изображения на лету.

, таким образом, я думаю, что у Вас есть проблема с не расположенные ресурсы.

, Если Вы развертываете свои aspx файлы с кодом - позади файлов к серверу. Это будет скомпилировано однажды, когда запрос прибудет в aspx. тогда, это будет сохранено к кэшу, пока файл не изменяется.

3
ответ дан Canavar 7 November 2019 в 19:21
поделиться

Scott Guthrie (менеджер группы разработчиков ASP.NET) имеет интересное сообщение об этом .

наиболее важные моменты, почему Вы не должны уезжать debug="true":

  1. компиляция страниц ASP.NET занимает больше времени (так как некоторая пакетная оптимизация отключена)
  2. , Код может выполниться медленнее (так как некоторые дополнительные пути отладки включены)
  3. , Намного больше памяти используется в рамках приложения во времени выполнения
  4. Сценарии и отображает загруженный с обработчика WebResources.axd, не кэшируются браузером, приводящий к большему количеству запросов между клиентом и сервером

Он также упоминает флаг <deployment retail=”true”/> в machine.config, который позволяет глобально переопределять отладку = "истинный" флаг всех приложений, работающих на машине (например, на рабочем сервере).

<час>

Обновление : развертывание веб-приложений с debug="true" все еще плохо, поскольку можно читать в недавнее сообщение в блоге Scott Hanselman :

Вот то, почему отладка = "верный" плоха. Серьезно, мы не шутим.

  • тайм-аут выполнения запроса Переопределений, делающий его эффективно бесконечный
  • , Отключает и страницу и оптимизацию JIT-компилятора
  • В 1,1, приводит к чрезмерному использованию памяти CLR для отладочной информации, отслеживающей
  • В 1,1, выключает пакетную компиляцию динамических страниц, ведя к 1 блоку на страницу.
  • Для кода VB.NET, приводит к чрезмерному использованию WeakReferences (используемый для редактирования, и продолжите поддержку).

важное примечание: Вопреки то, чему иногда верят, устанавливая розничную продажу = "верный" в элементе, не является прямым противоядием к наличию отладки = "верный"!

77
ответ дан Marc.2377 7 November 2019 в 19:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: