Вопрос

Контекст:Мы создаем платформу для быстрой доставки приложений WPF.Этот фреймворк использует Autofac в качестве контейнера IoC, а также использует регионы из Prism v1.Мы планируем задачи с параллельными расширениями от Microsoft.

Мы сталкиваемся со следующей проблемой:Когда мы загружаем приложение с пустыми представлениями (то есть просто оболочкой с регионами и элементами управления-заполнителями), объем памяти будет оставаться стабильным около 60 секунд, и после этого он будет увеличиваться примерно каждую секунду на 4 КБ, затем на 4 КБ, после этого на 8 КБ.Таким образом, каждые 3 секунды к объему нашей памяти добавляется 16 КБ.

Что мы пытались сделать, чтобы отследить утечку?Я начал с использования dotTrace, но я не смог увидеть никакой разницы между двумя снимками, сделанными с интервалом в 30 минут.Перешел к профилировщику памяти .NET, потому что он дает мне больше информации, но опять же, мы не видим никаких различий между двумя моментальными снимками.Мы можем видеть, что создается несколько объектов, но они тоже удаляются, и в результате получается дельта, равная 0.Поэтому я перешел к windbg, но результат тот же.

Еще одна странная вещь заключается в том, что когда мы запускаем sysinternals dbgvw, мы не видим никаких вызовов, выполняемых в наших приложениях.

Есть ли у вас какие-либо предложения относительно того, что мы могли бы попробовать дальше, чтобы выяснить, что / кто является виновником?

Это было полезно?

Решение 2

Как оказалось, это была ошибка внутри WPF, и обходным путем было создать обработчик окна как самый первый объект или что-то в этом роде.Спасибо, ребята

Другие советы

Если вы ищете неуправляемые утечки и используете Visual Studio, вы можете получить удивительно полезную информацию, используя встроенные функции crt:

видишь ответ на связанный с этим вопрос

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top