Я запускаю приложение, которое показывает некоторые очень специфические проблемы.Он отлично работает в течение примерно 2,5 часов, затем внезапно неуправляемая память начинает расти и быстро расти.Примерно через полчаса происходит сбой приложения.
Приложение не использует неуправляемые библиотеки DLL.Это общение с внешним приложением.Он пишет с помощью сокета (используется через поток) и читает через поток WCF.
Я профилировал его с помощью ANTS.Внезапное изменение в неуправляемом использовании памяти очень поразительно;он остается идеально ровным навсегда, затем внезапно начинает увеличиваться и продолжает делать это с постоянной скоростью, пока не произойдет сбой приложения.Кажется, что ничего в управляемой памяти неуместно.
Учитывая, что я не использую преднамеренно неуправляемый код, трудно определить, откуда происходит утечка.ANTS не поможет.Трудно очистить код от проблем, когда он не увеличивается с самого начала (приложение все время простаивает, хотя оно и пингует свой сервер один раз в секунду через сокет с очень небольшим битом данных).
Чтобы повторить, приложение и сервер оба бездействуют в течение этого времени;он работает в изолированной тестовой системе (как на сервере, так и на клиенте).Клиент - тот, который протекает.