Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / В WPF-приложении утекает память / 9 сообщений из 9, страница 1 из 1
16.05.2016, 13:09
    #39236464
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В WPF-приложении утекает память
Вот из-за этой функции:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    Public Shared Function Serialize(Of T)(value As T, Optional emptyNs As Boolean = False) As String
        If value.Equals(Nothing) Then Return Nothing
        Dim xmlNamespaces As XmlSerializerNamespaces
        If Not emptyNs Then
            xmlNamespaces = New XmlSerializerNamespaces()
            xmlNamespaces.Add("x", "http://www.w3.org/2001/XMLSchema-instance")
        Else
            xmlNamespaces = New XmlSerializerNamespaces({XmlQualifiedName.Empty})
        End If

        Dim serializer = XmlSerializer.FromTypes({GetType(T)})(0)
        Dim settings = New XmlWriterSettings() With {.Encoding = New UnicodeEncoding(False, False), .Indent = True, .IndentChars = vbTab, .NewLineChars = vbCrLf, .OmitXmlDeclaration = emptyNs}
        Using textWriter = New StringWriterUtf8()
            Using xmlWriter__1 = XmlWriter.Create(textWriter, settings)
                serializer.Serialize(xmlWriter__1, value, xmlNamespaces)
            End Using
            serializer = Nothing
            xmlNamespaces = Nothing
            settings = Nothing
            Return textWriter.ToString()
        End Using
    End Function

И GC.Collect не помогает. Что тут не так?
...
Рейтинг: 0 / 0
16.05.2016, 14:10
    #39236545
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В WPF-приложении утекает память
Может потому что Return находится внутри Using и Dispose не выполняется?
(не проверял, просто предположение)
...
Рейтинг: 0 / 0
16.05.2016, 14:40
    #39236574
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В WPF-приложении утекает память
Shocker.ProМожет потому что Return находится внутри Using и Dispose не выполняется?
(не проверял, просто предположение)Вообще-то Dispose должно выполняться при любом виде выхода из Using.

Clr profiler показывает, что память забита экземплярами System.Type и Object. Выходит, что это XmlSerializer память чистить не умеет?
...
Рейтинг: 0 / 0
16.05.2016, 14:46
    #39236585
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В WPF-приложении утекает память
Более того, я закомментировал весь код главного окна, запустил и закрыл прогу, и получил такую статистику:

Handles created: 686
Handles destroyes: 16
Handles survived: 670

какой-то треш с памятью под дотнетом творится.
...
Рейтинг: 0 / 0
16.05.2016, 14:47
    #39236586
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В WPF-приложении утекает память
XmlSerializer — Assembly Leak без спроса

зы: лично не проверял.
...
Рейтинг: 0 / 0
16.05.2016, 14:53
    #39236601
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В WPF-приложении утекает память
Ну да. Тут о том же пишут. Полезная инфа, надо запомнить.
...
Рейтинг: 0 / 0
16.05.2016, 15:24
    #39236645
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В WPF-приложении утекает память
Алексей К XmlSerializer — Assembly Leak без спроса

зы: лично не проверял.Ок, тут утечка исчезла.

Почти.

За несколько циклов по 10000 итераций утекло несколько мегабайт памяти (до этого текла десятками при цикле в 1000 итераций).
Но при этом независимо от количества циклов Clr profiler показывает одно и то же количество созданных/уничтоженных хендлов.
...
Рейтинг: 0 / 0
16.05.2016, 15:27
    #39236648
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В WPF-приложении утекает память
И одинаковый объем использованной памяти сразу после старта и после циклов. Но диспетчер задач с ним не согласен.
...
Рейтинг: 0 / 0
16.05.2016, 15:30
    #39236653
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В WPF-приложении утекает память
AntonariyБолее того, я закомментировал весь код главного окна, запустил и закрыл прогу, и получил такую статистику:

Handles created: 686
Handles destroyes: 16
Handles survived: 670

какой-то треш с памятью под дотнетом творится.Тут задача прибивалась кнопкой kill в clr profiler, но даже при закрытии из самой программы с подчисткой всего что можно выходит 4208/3635
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / В WPF-приложении утекает память / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]