Предположение, что у Вас есть собственная сборка Windows MySQL, существует несовместимость эмуляции терминала между DOS
(командная строка) окна и bash
. Подсказка для mysql
не обнаруживается.
Для подтверждения этого введите команду и возврат - он будет, вероятно, работать, но подсказка и эхо команды (что Вы вводите) теряются.
может быть обходное решение или в CYGWIN
системные свойства или в bash
, но я никогда не не торопился для разработки этого.
Запустите профилировщик вашего кода.
Вот два хороших варианта:
Я считаю, что для обоих продуктов есть бесплатная пробная версия.
В мониторе производительности добавьте счетчики для процесса / байтов личного пользования и памяти CLR .NET / # байтов во всех кучах. Частные байты - это вся память, а память CLR просто управляется. Таким образом, если память CLR остается достаточно ровной, но частные байты продолжают расти с течением времени, это означает, что утечка происходит в неуправляемом ресурсе. Обычно это означает, что вы неправильно распоряжаетесь собственными ресурсами. Хорошо бы посмотреть на такие вещи, как COM или IO (потоки и файлы). Когда вы закончите, убедитесь, что все это утилизировано.
Вы можете попробовать использовать профилировщики, такие как dotTrace - установите его в трассировку памяти и запустите приложение.
Это должно помочь вам понять, какие сборки и области приложения потребляют слишком много памяти на ходу.
Вероятно, это предотвращение, а не обнаружение, но на уровне кода C # вы должны проверить, что все классы, использующие большие ресурсы, такие как изображения и другие файлы, правильно реализуют шаблон удаления. . При необходимости вам также может потребоваться переопределить финализатор.
MSDN имеет хорошее руководство по этому вопросу.
Если у вас есть какие-либо классы в вашем приложении, которые, как вы знаете, используют большие ресурсы, это первые места для поиска проблемы с памятью.
Я обнаружил, что EQATEC Profiler довольно хорош, к тому же он бесплатный!
Вы взаимодействуете с Office? Если это так, убедитесь, что вы очистили объекты приложения. Это один из возможных виновников.
Другой - это глобальные объекты, такие как статические объекты.
На вашем сайте много динамических страниц?
Вы также можете попробовать IBM Purify
. Я предлагаю вам попробовать с небольшим набором динамических страниц, отключив на время все остальные. Ненавижу это говорить, но вполне возможно, что в IIS 7 также могут быть утечки.
Утечки памяти в .NET не так распространены, но когда они случаются, чаще всего из-за неподключенных обработчиков событий. Убедитесь, что вы отсоединили обработчики, прежде чем слушатели выйдут из области видимости.
Другой вариант - если вы забыли вызвать Dispose ()
на IDisposable
ресурсах. Это может помешать очистке неуправляемых ресурсов (которые не обрабатываются сборщиком мусора).
И еще одна возможная причина - заблокированный финализатор. Это предотвратит сбор всех оставшихся объектов в очереди финализатора.
Я использую WinDbg + Sos для отслеживания утечек. Шаги следующие:
! gcroot
, чтобы узнать, что поддерживает жизнь подозреваемых. Имейте в виду, что большое использование памяти также может быть связано с фрагментацией кучи. Обычные кучи уплотняются, но закрепленные объекты могут вызвать фрагментацию. Кроме того, LOH не сжимается, поэтому фрагментация не является редкостью для LOH.
Отличные руководства по WinDbg + sos здесь: http://blogs.msdn.com/tess/
Ознакомьтесь с лабораторными работами по изучению памяти и утечки памяти в этом сообщении в блоге:
Они могут помочь. По сути, вы можете использовать WinDBG для анализа дампа памяти и определения того, что занимает всю вашу память.
Мы использовали аналогичный подход, чтобы определить, что Regex поглощает всю нашу память, но только когда продукт был запущен на 64-битных машинах. Кривая обучения довольно крутая, но WinDBG - очень мощный инструмент.
Беги, не ходи, к Тесс Блог Феррандеса, Если он сломан, значит, исправить это следует , который хорошо скриптовые лаборатории, посвященные обучению как диагностировать и отлаживать вылеты, зависания и проблемы с памятью с кодом .NET. она есть одни из лучших материалов, которые я найдены на сегодняшний день, чтобы помочь вам начать работу.
Коммерческие профилировщики памяти, такие как ANTS и SciTech , являются отличными ресурсами, которые покажут, какие объекты находятся в куче и как они внедряются . Большинство коммерческих профилировщиков памяти имеют возможность загружать «снимок» памяти процесса (скажем, из вашей производственной среды).
Вы можете записать «снимок» памяти (см. Snap v. Dump ), используя adplus.vbs или DebugDiag . Adplus доступен как часть инструментов отладки для Windows . DebugDiag также будет иметь некоторый элементарный анализ (но кажется более надежным для неуправляемого кода) автоматически.
Мониторинг приложения
Для получения информации о том, что отслеживать, см. Повышение производительности и масштабируемости .NET , а именно Глава 15.
Что касается мониторинга, для этого также доступны коммерческие инструменты, однако каждая машина с Windows также поставляется с Perfmon.exe, который можно использовать для записи соответствующих счетчиков производительности.
Тестирование приложения
Чтобы получить представление о том, как выполнять нагрузочные или стресс-тесты, ознакомьтесь с шаблонами и практиками Руководством по тестированию производительности для веб-приложений .
Отладка приложения
После того, как вы определили, что вы есть проблема (мониторинг) и вы можете воспроизвести проблему (тестирование), вы можете приступить к отладке проблемы. См. Ссылки для Тесс - эта информация поможет вам.
Затем промойте и повторите! :)
Удачи!
которые можно использовать для записи соответствующих счетчиков производительности.
Тестирование приложения
Чтобы получить представление о том, как выполнять нагрузочные или стресс-тесты, ознакомьтесь с Руководством по шаблонам и методам по тестированию производительности для веб-приложений .
Отладка приложения
Как только вы определили, что у вас есть проблема (мониторинг) и вы можете воспроизвести проблему (тестирование), вы можете приступить к отладке проблемы. См. Ссылки для Тесс - эта информация поможет вам.
Затем промойте и повторите! :)
Удачи!
которые можно использовать для записи соответствующих счетчиков производительности.
Тестирование приложения
Чтобы получить представление о том, как выполнять нагрузочные или стресс-тесты, ознакомьтесь с Руководством по шаблонам и методам по тестированию производительности для веб-приложений .
Отладка приложения
Как только вы определили, что у вас есть проблема (мониторинг) и вы можете воспроизвести проблему (тестирование), вы можете приступить к отладке проблемы. См. Ссылки для Тесс - эта информация поможет вам.
Затем промойте и повторите! :)
Удачи!
Если вы определили, что у вас есть проблема (мониторинг), и вы можете воспроизвести проблему (тестирование), вы можете приступить к ее отладке. См. Ссылки для Тесс - эта информация поможет вам.
Затем промойте и повторите! :)
Удачи!
Если вы определили, что у вас есть проблема (мониторинг), и вы можете воспроизвести проблему (тестирование), вы можете приступить к ее отладке. См. Ссылки для Тесс - эта информация поможет вам.
Затем промойте и повторите! :)
Удачи!
Z
Посмотрите эту статью об обнаружении утечек памяти приложений .NET и связанные статьи, упомянутые внизу страницы, и, надеюсь, вы найдете решение или, по крайней мере, идею для разрешите это.
Спасибо
This new article of mine maybe useful: How to detect and avoid memory and resources leaks in .NET applications