Исследование проблемы с памятью и определение, заблокирован ли поток финализатора - PullRequest
0 голосов
/ 17 октября 2018

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

Я собрал пару дампов памяти во время выполнения операции с помощью инструмента дампа памяти Azure и заметил, что число объектов, готовых к финализации, постоянно увеличивается (15 К, 25 К, 28 К, и тот, который был получен после завершения всего процесса, показал100K).С моим ограниченным знанием, я подозреваю, что это может быть случай заблокированного потока финализатора.

Когда я просматриваю стек вызовов потока финализатора для всех дампов, часто встречается одна вещь: последняя запись всегда "ntdll! NtWaitForMultipleObjects".

Означает ли это, что мой поток финализаторазаблокирован?Или это нормально?

Ниже приведен скриншот из одного из дампов, показывающий полный стек вызовов для потока финализатора.

enter image description here

...