Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Что есть по диагностике потребления памяти приложением?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37071
Попросили разобраться с приложением падающем именно на семерке из за нехватки памяти.
При работе приложения, перебирая мышкой или клавой ноды дерева память процесса рабочего стола растет геометрической прогрессией. dwm.exe
Потом заканчивается.
Этот же экзешник на 8ке - память растет но не так быстро.
Собрано все давно на студии 2010.
- старая Net может влиять?
- хорошо бы иметь средство просмотра "имя класса - сколько экземпляров и памяти".....?
Пока не торопясь копаю. Проект даже еще не скомпилил из хранилища).
2 мар 19, 08:41    [21823253]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 1319
Petro123,

сними дамп процесса да посмотри в WinDbg
2 мар 19, 08:56    [21823257]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 1319
В самой студии есть возможность открыть dump для анализа памяти.

Есть CLR Profiler от Microsoft и сторонние решения: dotMemory от JetBrains, ANTS Memory Profiler от Red Gate, .NET Memory Profiler от SciTech
2 мар 19, 09:02    [21823258]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 1319
Ещё есть CLR MD:

https://github.com/Microsoft/clrmd
https://github.com/Microsoft/clrmd/blob/master/Documentation/ClrRuntime.md
2 мар 19, 09:06    [21823259]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 1319
В Performance Monitor множество Counters про память и сборщик мусора.

Вообщем анализируй не хочу :)
2 мар 19, 09:16    [21823260]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 1319
Ну и конечно документация:

Visual Studio provides a variety of profiling tools to help you diagnose different kinds of performance issues depending on your app type.

https://docs.microsoft.com/en-us/visualstudio/profiling/profiling-feature-tour
https://docs.microsoft.com/en-us/visualstudio/profiling/memory-usage
2 мар 19, 09:32    [21823262]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
ViPRos
Member

Откуда:
Сообщений: 9389
Petro123,

какой то тупой обработчик срабатывает рекурсивно
2 мар 19, 14:56    [21823333]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37071
ViPRos
Petro123,

какой то тупой обработчик срабатывает рекурсивно
ну память то этого не может расти.
Я пока ищу, как говори тут один мембер: "подключил, пошуршало пошуршало и выдало что в памяти 15000 экземпляров TreeNodePetro.
Тогда будет ясно возле чего искать, как ты говоришь, обрабочик-ссылку.
Думаю для такой фигни не нужен платный профилировщик.
Еще желательно, не в ide наверное. Так как придется смотреть на разных осях. На 8-ке нет утечки.
Работаю.
4 мар 19, 10:22    [21824091]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3168
https://github.com/fremag/MemoScope.Net
данная тула очень выручала, понятный и интуитивный интерфейс
4 мар 19, 10:56    [21824129]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37071
Roman Mejtes
https://github.com/fremag/MemoScope.Net
данная тула очень выручала, понятный и интуитивный интерфейс
ок.
Смотрю. Именно простота нужна.
4 мар 19, 11:27    [21824153]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26198
Petro123
Думаю для такой фигни не нужен платный профилировщик.
Еще желательно, не в ide наверное. Так как придется смотреть на разных осях. На 8-ке нет утечки.
Снять дамп, открыть в WinDbg, подключить бесплатный CLR Profiler, использовать CLR MD - это всё бесплатно.

У всех платных инструментов есть триальный период, которого должно с лихвой хватить, чтобы проанализировать утечку в одном приложении.

Petro123
Работаю.
Работай :)
4 мар 19, 11:51    [21824166]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26198
Roman Mejtes
https://github.com/fremag/MemoScope.Net
данная тула очень выручала, понятный и интуитивный интерфейс

Вот уже и обёрточку написали над WinDbg и CLR MD. Вообще халява.

Осталось снять дамп и открыть.
4 мар 19, 11:52    [21824169]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
hVostt
Member

Откуда:
Сообщений: 15228
Petro123,

dotMemory
4 мар 19, 12:32    [21824220]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37071
Roman Mejtes
https://github.com/fremag/MemoScope.Net
данная тула очень выручала, понятный и интуитивный интерфейс
правильно я понял, что работает только с дампами? Нет в меню - запустить ехе?
....
Как я понимаю, все что есть на рынке с запуском ехе - платное).
Счас юзаю платное Scitech .Net Memory Profiler. Очень круто в плане WYSIWYG и реалтайм бегущими цифрами объектов.
Но.... Платное)))))

hVostt
Petro123,

dotMemory

Блин, красиво, но триал всего 5 дней!
))
5 мар 19, 10:41    [21825135]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37071
Возможно в Net такое?
Я примерно знаю где баг.
При переходе по нодам дерева, справа появляется новое окно Properties этого нода.
Возможно эти 300 окон не овобождаются винде и растет память диспетчера окон винды.
Окно вижу в Spy
Handle 00093C8
Class Name WindowsForms10. Window. 8.app.0.754677f_r12_ad1
Как это окно или класс Net найти в любом профайлере?
В обоих выше не нашел.
Есть связь этих классов и классов Net?
5 мар 19, 12:17    [21825216]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3168
Petro123
Roman Mejtes
https://github.com/fremag/MemoScope.Net
данная тула очень выручала, понятный и интуитивный интерфейс
правильно я понял, что работает только с дампами? Нет в меню - запустить ехе?
....
Как я понимаю, все что есть на рынке с запуском ехе - платное).
Счас юзаю платное Scitech .Net Memory Profiler. Очень круто в плане WYSIWYG и реалтайм бегущими цифрами объектов.
Но.... Платное)))))

hVostt
Petro123,

dotMemory

Блин, красиво, но триал всего 5 дней!
))
сделать дамп религия не позволяет? Dump делается нажатием 1 кнопки через стандартные средства windows

Ctrl + Escape -> Detail (Process) -> Выбираете процесс -> ПКМ -> Контекстное меню, Create Dump File
5 мар 19, 13:17    [21825318]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37071
Roman Mejtes,
Да какая религия?
Просто пересел с коробки механика на автомат - понравилось.
...
Сделал. Ошибка при открытии:
Unable to find dac file
'mscordacwksz_Amd64_4.6.1590.00.dll' in symbol server.
5 мар 19, 15:23    [21825469]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37071
Roman Mejtes,
Прога от hVostt сказала сделать дамп Не 64бит
5 мар 19, 15:28    [21825476]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37071
Дамп делал осью
5 мар 19, 15:30    [21825477]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37071
Petro123
Счас юзаю платное Scitech .Net Memory Profiler. Очень круто в плане WYSIWYG и реалтайм бегущими цифрами объектов.
Но.... Платное)))))
эта открыла без проблем)))
5 мар 19, 15:32    [21825480]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37071
автор
В настоящее время невозможно изменить имя класса окна для формы Windows на C #, потому что реализация C # определяет его внутри метода ' private string GetFullClassName(string className)' и не дает программисту никакого способа переопределить значение, определенное внутри этого метода.

Вопрос прежний:
Есть утилиты которые покажут не только имя класса окна (spy++) но и имя класса Forms или UserControl наследника?
12 мар 19, 14:58    [21830329]     Ответить | Цитировать Сообщить модератору
 Re: Что есть по диагностике потребления памяти приложением?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37071
автор
The windows class is given a name in the form:

<windowsformsversion>.<windowstyle>.app<hexappdomainhash>
where <windowsformsversion> is the version of the library and is a fixed string ‘WindowsForms10’. <windowstyle> is in the form of Window.<hexstyle> where <hexstyle> is the style of the window (see Control.GetStyle()) in hex. Finally, <hexappdomainhash> is the hash code of the current app domain given in hex.

For example, a Form could have a class name like this:

WindowsForms10.Window.8.app1
Once the class has been registered it is stored in a cache, and this class is used the next time a form is created.

In fact, most Forms will have the class name I have just given; the only bit that will vary is the application domain portion of the name, or (occasionally) the style part. The big problem with this design is that it makes finding a window a pain. Win32 code can use FindWindowEx() to search for a window with a specific class name, and .NET code can call this method through a platform invoke. However, you cannot guarantee what the name will be (because you may not know what the application domain portion will be) and even if you could specify the name, all forms in the application domain will have the same class name regardless of the .NET class that was used to create the form.

In the next newsletter, I will identify a couple of solutions to this issue. I will also point out some other features of Windows Forms that can constrain how Win32 windowing functions and forms interact.

По прежнему ищу стать или утилиту типа spy+++
12 мар 19, 15:13    [21830364]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить