Какая особенность языка в Котлине может вызвать утечку памяти?

Я новичок в Kotlin, мне нравится новый язык для Android, но я боюсь использовать его в производстве и случайно вызывать утечку памяти. Есть ли руководство для нового разработчика Kotlin, показывающее, что может вызвать утечку памяти. Каковы решения предотвратить это?

Kotlin работает на той же JVM как Java или любой другой язык на основе JVM. Таким образом, он использует тот же сборщик мусора, что и Java, обеспечивая, как правило, безопасную среду выполнения утечки памяти.

Тем не менее, утечки памяти по-прежнему возможны. Обычный источник таких утечек держит ссылки на объекты дольше, чем это необходимо – иногда навсегда! – в результате утечки памяти. Некоторые распространенные практики против таких утечек:

  • не забудьте установить нулевые ссылки на null как только они больше не нужны. Это относится главным образом к глобальным / статическим vars; когда объект выходит из области видимости, вы не должны беспокоиться об этом (например, локальная переменная внутри функции).

  • используя слабые ссылки . Это несколько расширенная функция, позволяющая сообщать GC, что данная ссылка должна быть автоматически удалена при определенных условиях (т. Е. GC устанавливает для нее значение null ).

Как вы, возможно, уже догадались, эти то же самое относится к Java-коду.

Несколько крупных разработчиков уже используют Kotlin для своих приложений для Android (например, Pinterest, Basecamp, Square, Trello и т. Д.). Так что будьте уверены, вы в хорошей компании;)

Intereting Posts
Реализовать Hashmap с разными типами значений в Котлине Котлинская последовательность «пропускает» первые N записей Асинхронная работа, но получение нерешенной ссылки для ожидания Как передавать двоичные данные в тело ответа в Spring WebFlux Kotlin: For-loop должен иметь метод итератора – это ошибка? Провайдер pactVerify не подбирает файл JSON Pact Можно ли использовать деструктурирование в аргументах функции? kotlin, которая может использовать соединение httpS без проверки сертификата (например, curl – insecure) Почему у Котлина нет Десятичной прогрессии? Kotlin не может получить доступ к kotlin.jvm.functions.Function1 при вызове функции kotlin с java lambda Kotlin DialogFragment editText редактируемый всегда null плагин gradle с функцией kotlin – set boolean extension Я хочу, чтобы каждый элемент массива каждого массива отображался в виде единого кадра Можно ли запустить AsyncWebRequest через браузер? Kotlin и Proguard