Информация об изменениях

Сообщение Re[9]: WPF. Финализаторы не вызываются. Утечка памяти от 16.06.2020 12:11

Изменено 16.06.2020 12:13 alexzzzz

Re[9]: WPF. Финализаторы не вызываются. Утечка памяти
Здравствуйте, takTak, Вы писали:

A>>Объекты создаются в цикле быстрее, чем поток финализации успевает обрабатывать их финализаторы, а GC не может убивать старые объекты, пока их финализаторы не отработали.

T>так проблема для меня лично не столько в этом, а в том, что деструкторы больших по размеру объектов при всём этом без проблем работают

Повод измерить и сравнить скорость выделения 10кб в первом поколении и 100кб в large object heap. Если во втором случае заметно дольше, то финализаторы успевают отрабатывать.

T>>> получается противоречивое поведение, когда программа ведёт себя различно в зависимости лишь от разницы в размере данных


Это очевидная зависимость. Выдели на стеке буфер в мегабайт, а потом в десять мегабайт. Во втором случае будет StackOverflow. Ну, сам виноват, не уследил за размерами. И конечно большие объёмы данных обрабатывать дольше, чем маленькие ― скорость работы программы не может не отличаться.
Re[9]: WPF. Финализаторы не вызываются. Утечка памяти
Здравствуйте, takTak, Вы писали:

A>>Объекты создаются в цикле быстрее, чем поток финализации успевает обрабатывать их финализаторы, а GC не может убивать старые объекты, пока их финализаторы не отработали.

T>так проблема для меня лично не столько в этом, а в том, что деструкторы больших по размеру объектов при всём этом без проблем работают

Повод измерить и сравнить скорость выделения 10кб в нулевом поколении и 100кб в large object heap. Если во втором случае заметно дольше, то финализаторы успевают отрабатывать.

T>>> получается противоречивое поведение, когда программа ведёт себя различно в зависимости лишь от разницы в размере данных


Это очевидная зависимость. Выдели на стеке буфер в мегабайт, а потом в десять мегабайт. Во втором случае будет StackOverflow. Ну, сам виноват, не уследил за размерами. И конечно большие объёмы данных обрабатывать дольше, чем маленькие ― скорость работы программы не может не отличаться.