WPF. Финализаторы не вызываются. Утечка памяти
От: igor-booch Россия  
Дата: 14.06.20 15:04
Оценка:
В продолжении темы http://rsdn.org/forum/dotnet/7753095.1
Автор: igor-booch
Дата: 13.06.20

Создал минимальное воспроизводящее приложение.

Условия воспроизведения:
1) Visual Studio 2017
2) Приложение WPF
3) Запуск приложение под отладчиком
4) код окна WPF

using System.Windows;

namespace ReproduceFinalizerMemoryLeak
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            do
            {
                Item item = new Item();
            } while (true);

            InitializeComponent();
        }
    }

    public class Item
    {
        private byte[] _bytes;

        public Item()
        {
            _bytes = new byte[10000];
        }

        ~Item()
        {

        }
    }
}


Что присходит:
Этот код отваливается с OutOfMemoryException. Финализаторы Item() не вызываются.

В моем реальном WPF приложении утечка памяти просходит без отладки и в более мягких условиях, но проявления те же: финализаторы не вызываются, происходит учечка памяти.
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания
http://rsdn.ru/Info/rules.xml
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.