Я начал просматривать некоторый код в проекте и нашел что-то вроде этого:
GC.Collect();
GC.WaitForPendingFinalizers();
Эти строки обычно появляются в методах, которые предназначены для разрушения объекта под обоснованием повышения эффективности. Я сделал это замечание:
- Вызывать сбор мусора явным образом при уничтожении каждого объекта снижает производительность, поскольку это не учитывается, если это абсолютно необходимо для производительности CLR.
- Вызов этих инструкций в этом порядке приводит к уничтожению каждого объекта, только если завершены другие объекты. Следовательно, объект, который может быть уничтожен независимо, должен ждать другого уничтожения объекта без реальной необходимости.
- Он может создать тупик (см.: этот вопрос)
Являются ли 1, 2 и 3 истинными? Можете ли вы дать некоторые рекомендации, подтверждающие ваши ответы?
Хотя я почти уверен в своих замечаниях, мне нужно четко объяснять свои аргументы, чтобы объяснить моей команде, почему это проблема. Это причина, по которой я прошу подтверждения и ссылки.