
Telegram канал Dev Jungles -
Поддержать канал можно:
- Спонсорством на YouTube
- Переводом на карту или пополнением банки монобанка:
Dev Jungles YouTube Channel Fund
Номер карты банки:
5375 4112 0230 1466
- Или криптой:
BTC - 18C3jsFYwviN5FvzpAt4uMWRfUeVKvdWxy
ETH - 0x2903f63ba9009732272e91a299053b9d7b623216
USDT on ERC20 - 0x2903f63ba9009732272e91a299053b9d7b623216
USDT on TRC20 - TSmS5RzQKbWdxZkoM2oRo9HK8FYBaq744T
LTC - LN3CkrnvZLZTXDUhqTy1gUKMVpLjEPA4G2
DOGE - DPwon439jf3axVSBwyuXso6z7CivuJF655
AAVE - 0x2903f63ba9009732272e91a299053b9d7b623216
Waves - 3P8D57Zw7CrqW2o7dHpvZR2UzAzQRFA2kZd
Вы видели сколько памяти теперь жрет Google Chrome?! Я видел и не хочу, чтобы мои приложения делали так же.
Что бы они так не делали я провел десятки часов выжигая себе глаза в поисках утечек памяти, анализируя memory traffic.
CPU-Profiling разобрали здесь:
Пришло время RAM-Profiling.
Кто-то большой из мира dotNet как-то сказал, что самый простой способ найти утечку памяти это купить профилировщик баксов за 500. При чем любой. Они сейчас все хороши. Ну кроме встроенного в Visual Studio. Я использую dotMemory и про него и расскажу.
Какой-нибудь умник скажет, что ему дешевле докинуть 16ГБ или даже 160ГБ на сервак, чем искать утечку. Может даже будет прав, только вот пользователи его приложухи уйдут к конкурентам, пока он эту память будет выделять, а каждая сборка мусора будет превращаться в долгие Stop The World от GC.
Видео про бенчмаркинг:
Таймкоды:
0:00 Вступление. Что такое профилировка памяти, кому и когда понадобиться.
8:46 Первый код для профилирования.
11:10 Интерфейс стартового экрана JetBrains dotMemory.
13:43 Старт профилировки. Функционал dotMemory. Методы работы.
28:20 Вкладка Compare для двух снепшотов. Функционал. Методы работы.
31:21 Вкладка View memory allocations.
34:00 Немного общей информации о реальном профилировании.
36:07 Следующий пример. Linux и CLI профилировка.
38:00 Сетап Ubuntu.
40:15 Установка .NET на Ubuntu.
42:13 Детальней про код в примере. Билд приложения.
44:40 Запуск dotMemory в консоли.
49:30 Функционал dotMemory CLI. Запуск профилировки.
55:15 Разбор полученного Workspace файла.
59:40 Блок /trigger-spec/. Немного про утечку памяти на сервере.
1:07:01 Memory traffic. Про код в новом примере.
1:08:37 Еще раз про веб приложение из предыдущего примера.
1:10:22 Продолжение разбора нового примера с игрой.
1:12:54 Профилирование игры.
1:17:52 Пример с утечкой памяти.
1:20:15 Профилирование файлового менеджера. Методы поиска. Более детальный разбор функционала dotMemory.
1:31:30 Еще один пример с утечкой памяти (неудачный).
1:34:38 Профилирование.
1:38:14 В чем была идея этого примера. Возможная утечка памяти в приложениях.
1:41:00 Benchmark .NET анализ небольших кусков кода.
1:42:43 Прощание.