Я читал другие вопросы, которые возникают, когда я спрашиваю о снимках памяти, но я мог быть слишком толстым, чтобы действительно понять это. У меня есть служба Windows, в которой я могу вызвать утечку памяти, выполняя довольно простую операцию с данными несколько раз. Я сделал снимки памяти по пути, и я вижу, что число корней увеличивается (от 2100 после успешного запуска до 7 100 после примерно 100 операций с данными). Снимки были сделаны с метками синей стрелки:
Перед несколькими операциями с данными снимок памяти выглядит следующим образом:
Впоследствии это выглядит так:
Мы используем WCF для данныхтранспорт, и может показаться, что сериализация играет определенную роль в этом росте памяти, но я не знаю, куда идти дальше. Если я смотрю на экземпляры RuntimeType+RuntimeTypeCache
, то подавляющее большинство случаев выглядит так:
Если кто-нибудь может помочь мне разобраться в следующем шагевзять, я был бы очень признателен. У нас есть статический экземпляр, у которого есть параллельный словарь ServiceHosts
, к которому я с подозрением отношусь, но я не знаю, как это подтвердить.
РЕДАКТИРОВАТЬ:
Это также кажется значительными относится к ServiceHosts
. Можем ли мы разрешить какую-то неразумную генерацию прокси и сохранение экземпляра через эти статические отношения?