#Kotlin #MemoryLeak
How Kotlin helps you avoid memory leaks
Kotlin ввел множество новых механизмов, которые упрощают написание кода в Android:
👉 null safety
👉 type inference
👉 закрытые от наследования классы по умолчанию
👉 все вложенные классы по умолчанию статические
Но в дополнение ко всем ещё Kotlin может помогать вам избегать утечек памяти.
Такой код не вызовет утечки в Android, хотя его аналог в Java бы вызывал.
Разница заключается в том, что лямбда в Kotlin интерпретируется как статический вложенный класс, и не хранит ссылку на внешний класс, если код внутри не обращается к внешним нестатическим элементам. В Java независимо от каких-либо условий всегда будет создаваться обычный класс.
Замечание: вышеприведенное рассматривается для Java 7, так как Android разработка сейчас использует эту версию в байт коде. Для Java 8 лямбды исполняются с помощью invokedynamic, что оптимизирует их выполнение.
How Kotlin helps you avoid memory leaks
Kotlin ввел множество новых механизмов, которые упрощают написание кода в Android:
👉 null safety
👉 type inference
👉 закрытые от наследования классы по умолчанию
👉 все вложенные классы по умолчанию статические
Но в дополнение ко всем ещё Kotlin может помогать вам избегать утечек памяти.
class SampleActivity : Activity() { override fun onCreate(savedState: Bundle?) { super.onCreate(savedState) setContentView(R.layout.activity_leak) button.setOnClickListener { startAsyncWork() } } private fun startAsyncWork() { val work = Runnable { SystemClock.sleep(20000) } Thread(work).start() }}Такой код не вызовет утечки в Android, хотя его аналог в Java бы вызывал.
Разница заключается в том, что лямбда в Kotlin интерпретируется как статический вложенный класс, и не хранит ссылку на внешний класс, если код внутри не обращается к внешним нестатическим элементам. В Java независимо от каких-либо условий всегда будет создаваться обычный класс.
Замечание: вышеприведенное рассматривается для Java 7, так как Android разработка сейчас использует эту версию в байт коде. Для Java 8 лямбды исполняются с помощью invokedynamic, что оптимизирует их выполнение.
Medium
How Kotlin helps you avoid memory leaks
Does Kotlin help you avoid memory leaks? In this article I’m analyzing the bytecode generated when using lambdas to see if that’s true.
#GarbageCollector #MemoryLeak
Everything you need to know about Memory Leaks in Android
Android имеет хорошую систему очистку памяти, которая улучшается с выходом каждой новой версией ОС. Но допустить утечку памяти все также остается возможным. В статье довольно простым языком и наглядными иллюстрациями показывается:
👉 Что такое Stack и Heap
👉 Как очищается память Garbage Collector-ом
👉 Как возникают утечки памяти и как не допускать их
👉 Последствия утечек памяти
👉 Поиск утечек памяти
Everything you need to know about Memory Leaks in Android
Android имеет хорошую систему очистку памяти, которая улучшается с выходом каждой новой версией ОС. Но допустить утечку памяти все также остается возможным. В статье довольно простым языком и наглядными иллюстрациями показывается:
👉 Что такое Stack и Heap
👉 Как очищается память Garbage Collector-ом
👉 Как возникают утечки памяти и как не допускать их
👉 Последствия утечек памяти
👉 Поиск утечек памяти
Medium
Everything you need to know about Memory Leaks in android.
One of the core benefits of Java that they are garbage collected language. Essentially, we can create objects and the garbage collector…
#MemoryLeak
Вышел Leak Canary 2.0
Вышла новая мажорная версия популярного инструмента для отслеживания утечек памяти во время работы приложения. В новой версии произошла уйма изменений:
👉 Библиотека полностью переписана на Kotlin
👉 Улучшен механизм сборки дампов памяти, что будет меньше блокировать работу с приложением
👉 Новый UI для просмотра информации о утечках памяти
👉 Новая библиотека LeakSentry, которая позволяет определить когда происходит утечка и вызывает LeakCanary для сбора информации. Это поможет понять какие объекты приводят к
👉 Новый парсер heap, который работает эффективнее и быстрее
👉 Упрощена настройка библиотеки - 0 строк кода для включения, только добавление зависимости
👉 Новая утилита Heap Explorer, которая позволяет делать анализ heap в LeakCanary прямо на устройства
👉 Из коробки поддерживает отслеживание за утечками
👉 Новая библиотека Shark, которая используется
В обновление произошли значительные изменения API, поэтому если вы активно его использовали (а не просто подключали библиотеку), то вам надо будет выполнить миграцию. Больше информации на официальном сайте.
Вышел Leak Canary 2.0
Вышла новая мажорная версия популярного инструмента для отслеживания утечек памяти во время работы приложения. В новой версии произошла уйма изменений:
👉 Библиотека полностью переписана на Kotlin
👉 Улучшен механизм сборки дампов памяти, что будет меньше блокировать работу с приложением
👉 Новый UI для просмотра информации о утечках памяти
👉 Новая библиотека LeakSentry, которая позволяет определить когда происходит утечка и вызывает LeakCanary для сбора информации. Это поможет понять какие объекты приводят к
OutOfMemoryError👉 Новый парсер heap, который работает эффективнее и быстрее
👉 Упрощена настройка библиотеки - 0 строк кода для включения, только добавление зависимости
👉 Новая утилита Heap Explorer, которая позволяет делать анализ heap в LeakCanary прямо на устройства
👉 Из коробки поддерживает отслеживание за утечками
Fragment👉 Новая библиотека Shark, которая используется
LeakCanary для анализа и может запускать в любой Java VM. Также доступен CLI, который вы можете использовать с компьютера для сбора информации о расходе памяти с устройстваВ обновление произошли значительные изменения API, поэтому если вы активно его использовали (а не просто подключали библиотеку), то вам надо будет выполнить миграцию. Больше информации на официальном сайте.
square.github.io
Change Log - LeakCanary
A memory leak detection library for Android
#MemoryLeak #LeakCanary
Вышел LeakCanary 2.1.0
Популярная утилита для поиска утечек памяти развивается дальше. После недавне представленной версии 2.0 уже выходит следующее минорное обновление, в которое попали новые функции:
👉 Gradle плагин для обфусцированных приложений. Раньше была проблема, что при тестировании обфусцированной сборки приложения (с R8 или ProGuard) все стектрейсы было бесполезно смотреть с устройства так, как все названия классов/методов были изменены. Встречайте LeakCanary gradle плагин для обфусцированных приложений, которые решает это
👉 Множество улучшений в UI приложения для просмотра утечек памяти на устройства
👉 Улучшение документации
👉 Улучшение в API
👉 Автоматическое отключение LeakCanary, если в classpath найден заданный класс. По умолчанию этим классом является
👉 Возможность изменения способа с помощью которого LeakCanary ищет утечки памяти в heap dump
👉 Интерактивный режим работы CLI
Вышел LeakCanary 2.1.0
Популярная утилита для поиска утечек памяти развивается дальше. После недавне представленной версии 2.0 уже выходит следующее минорное обновление, в которое попали новые функции:
👉 Gradle плагин для обфусцированных приложений. Раньше была проблема, что при тестировании обфусцированной сборки приложения (с R8 или ProGuard) все стектрейсы было бесполезно смотреть с устройства так, как все названия классов/методов были изменены. Встречайте LeakCanary gradle плагин для обфусцированных приложений, которые решает это
👉 Множество улучшений в UI приложения для просмотра утечек памяти на устройства
👉 Улучшение документации
👉 Улучшение в API
Leak и LeakTrace👉 Автоматическое отключение LeakCanary, если в classpath найден заданный класс. По умолчанию этим классом является
org.junit.Test👉 Возможность изменения способа с помощью которого LeakCanary ищет утечки памяти в heap dump
👉 Интерактивный режим работы CLI
#MemoryLeak #LeakCanary
Вышел LeakCanary 2.2
В новой версии нас ждут новые плюшки:
👉 Отслеживание утечек
👉 Поддержка Android TV
👉 Java-friendly Config builders
Вышел LeakCanary 2.2
В новой версии нас ждут новые плюшки:
👉 Отслеживание утечек
ViewModel из Arch Components👉 Поддержка Android TV
👉 Java-friendly Config builders
square.github.io
Change Log - LeakCanary
A memory leak detection library for Android
#MemoryLeak #LeakCanary
Вышел LeakCanary 2.3
Вышла новая версия решения для обслуживания утечек памяти в Android приложениях. Изменений мало в основном багфикс, но и для всех забывчивых, кто забывает убрать LeakCanary из релизных сборок будет происходить креш.
Вышел LeakCanary 2.3
Вышла новая версия решения для обслуживания утечек памяти в Android приложениях. Изменений мало в основном багфикс, но и для всех забывчивых, кто забывает убрать LeakCanary из релизных сборок будет происходить креш.
square.github.io
Change Log - LeakCanary
A memory leak detection library for Android
#MemoryLeak
Practical Guide To Solve OutOfMemoryError in Android Application
Утечки памяти и, как следствие, OutOfMemoryError - больное место как для начинающего, так и для опытного Android разработчика. Основная проблема состоит в том что подобного рода ошибки не так очевидны и их сложно сразу отследить. Наиболее частые причины возникновения:
👉 Использование static
👉 Зарегистрированные, но не актуальные Listener'ы
👉 Использование
👉 Не статичные вложенные классы
В статье подробно рассказывается обо всех этих причинах, приводятся примеры подобных утечек и рассказывается как их избегать.
Practical Guide To Solve OutOfMemoryError in Android Application
Утечки памяти и, как следствие, OutOfMemoryError - больное место как для начинающего, так и для опытного Android разработчика. Основная проблема состоит в том что подобного рода ошибки не так очевидны и их сложно сразу отследить. Наиболее частые причины возникновения:
👉 Использование static
Context, View или Activity👉 Зарегистрированные, но не актуальные Listener'ы
👉 Использование
getContext() вместо getApplicationContext() там где это необходимо👉 Не статичные вложенные классы
В статье подробно рассказывается обо всех этих причинах, приводятся примеры подобных утечек и рассказывается как их избегать.
Medium
Practical Guide To Solve OutOfMemoryError in Android Application
In this blog, we will learn how to solve OutOfMemoryError in Android application. We will look at the reasons responsible for OOM.
#MemoryLeak #ViewBinding
Avoiding memory leaks when using Data Binding and View Binding
При использовании View Binding легко попасть в ситуацию, когда у вас в Fragment начнет утекать память. Связано это с тем, что ViewBinding хранит ссылки на View, которые уничтожаются в
Самое интересное, что автор предложил решением мою библиотеку ViewBindingPropertyDelegate, которая изящно решает работу с ViewBinding и DataBinding.
Avoiding memory leaks when using Data Binding and View Binding
При использовании View Binding легко попасть в ситуацию, когда у вас в Fragment начнет утекать память. Связано это с тем, что ViewBinding хранит ссылки на View, которые уничтожаются в
onDestroyView() и создаются в onCreateView().Самое интересное, что автор предложил решением мою библиотеку ViewBindingPropertyDelegate, которая изящно решает работу с ViewBinding и DataBinding.
Medium
Avoiding memory leaks when using Data Binding and View Binding
In our current project we are using a lot of Data Binding and recently we have started using View Binding as well.
#MemoryLeak #Tooling
Вышел LeakCanary 2.5
Что нового:
🚀 Ускорен анализ heap
👉 LeakCanary улучшил расчет размера для всех объектов
👉 Возможность отключения дампа heap через ui
👉 Возможность деобфускации дампа heap из командной строки с помощью Shark CLI
Вышел LeakCanary 2.5
Что нового:
🚀 Ускорен анализ heap
👉 LeakCanary улучшил расчет размера для всех объектов
👉 Возможность отключения дампа heap через ui
👉 Возможность деобфускации дампа heap из командной строки с помощью Shark CLI
square.github.io
Change Log - LeakCanary
A memory leak detection library for Android