169 похожих чатов

Картина Репина "Приплыли". Объясняю лиду, зачем нужно занулять view binding

во фрагментах. Не верит. Говорит, что документация Гугла неправильная и всё очистится само собой.

Есть какой-то простой пример, чтобы показать memory leak?

48 ответов

46 просмотров

https://proandroiddev.com/avoiding-memory-leaks-when-using-data-binding-and-view-binding-3b91d571c150

О времена, о нравы

Там не будет memory leak

Алексей Соловьев
Там не будет memory leak

Посмотри ради интереса батернайф как делали 6 лет назад в фрагментах.

Leonid-B. Автор вопроса
Алексей Соловьев
Там не будет memory leak

А что там будет? А зачем гугл велит занулять?

Leonid B.
А что там будет? А зачем гугл велит занулять?

Как только фрагмент удалиться, все данные по идеи должны тоже удалиться. Но можно проверить LeakCanary

Leonid-B. Автор вопроса
Алексей Соловьев
Как только фрагмент удалиться, все данные по идеи ...

Угу. А Гугл пишет мануалы, потому что не в курсе, что всё просто.

Hovhannes Asatryan
А это что тогда?

Т.е ты хочешь сказать, что фрагмент останется в памяти или binding ?

Алексей Соловьев
Т.е ты хочешь сказать, что фрагмент останется в па...

Просто подумай про случай пересоздания фрагмента при смерти процесса или поворота экрана

Leonid-B. Автор вопроса
Алексей Соловьев
Т.е ты хочешь сказать, что фрагмент останется в па...

Останется вью, которое в binding, со всем своим добром.

Hovhannes Asatryan
Просто подумай про случай пересоздания фрагмента п...

И чем это грозит? От пару пересозданий серьезного не че не вылезет

Алексей Соловьев
И чем это грозит? От пару пересозданий серьезного ...

Пару раз сломать ногу : ничего страшного. Заживёт

Leonid B.
Останется вью, которое в binding, со всем своим до...

Но все данные удаляться после уничтожения фрагмента.

Алексей Соловьев
Но все данные удаляться после уничтожения фрагмент...

Формулировка абсолютно оторвана от айти. Мы так не говорим в андроид. Какие данные какое удаление

Hovhannes Asatryan
Формулировка абсолютно оторвана от айти. Мы так не...

Ты злишься потому что я раскритиковал твоё видел 😏.

Алексей Соловьев
Раз

Ну то есть это именно ты назвал один случай («удалится», дестрой), при котором утечки нет. Полностью игнорируя другой случай, дестройВью и уход в бэкстек, когда вью и утечёт.

Mike (деньги не клянчу)
Ну то есть это именно ты назвал один случай («удал...

Да, утечёт. Но по идеи, обратно когда произойдёт onDestroy, эти объекты будут очищены GC

Алексей Соловьев
Да, утечёт. Но по идеи, обратно когда произойдёт o...

А когда пользователь перезагрузит телефон или снесёт приложение, утечки тоже ликвидируются, прикинь. Значит ли это, что их нет?

Алексей Соловьев
Они есть, но их как бы нет 😏

А какие утечки есть, но как бы есть? Ты вообще признаёшь такой класс проблем?

Mike (деньги не клянчу)
А какие утечки есть, но как бы есть? Ты вообще при...

Да, у меня две в проекте старом есть, ни как не доберусь до них, чтобы исправить

Алексей Соловьев
Да, у меня две в проекте старом есть, ни как не до...

Как ты различаешь, какие влияют на работу приложения, а какие — нет? На глазок?)

Mike (деньги не клянчу)
Как ты различаешь, какие влияют на работу приложен...

Если приложение крашнулось. То повлияло 😏. А если серьезно, то я все их исправляю в нормальных проектах, если нахожу.

Алексей Соловьев
А ты?

А я не занимаюсь отрицанием реальности. Влияют все.

Алексей Соловьев
Если приложение крашнулось. То повлияло 😏. А если ...

А если в день написания утечки не крашнулось, а через месяц, после подключения загрузки картинок и добавления глубокой навигации — крашнулось?

Mike (деньги не клянчу)
А если в день написания утечки не крашнулось, а че...

Ты написал, как будто кто то специально пишет так, чтобы произошла утечка.

Алексей Соловьев
Ты написал, как будто кто то специально пишет так,...

А разница? Результат один — крэш. Пользователю пох, некомпетентность это или саботаж.

Алексей Соловьев
Я до релиза все косяки исправляю

Молодец. А ты, как я вижу, больше не отрицаешь, что утечка — это косяк.

Mike (деньги не клянчу)
Молодец. А ты, как я вижу, больше не отрицаешь, чт...

Меня немного не так поняли наверное. Да, при повороте экрана, если в onDestroyView не занулять binding, то произойдёт утечка памяти, но как только будет вызван onDestroy и GC пройдётся по кучи, эта утечка должна быть устранена. В реальных проектах пользователи переходят всего на пару экранов. Думаю мало кто будет крутить один экран очень много раз, поэтому с этим практически не будет проблем. Но с другой сторону, чтобы занулить binding много кода писать не нужно. Вот о чем я хотел сказать. И по факту, если так приделаться к терминам досконально , то утечки вообще может и не быть.

Leonid-B. Автор вопроса
Алексей Соловьев
Ты написал, как будто кто то специально пишет так,...

Как правило, специально так не пишут. Однако одна команда напишет вычисления, используя метрическую систему, а другая - имперскую. Обе команды абсолютно правы. А в итоге твой космический аппарат со всей дури ибанецца об Марс.

Leonid-B. Автор вопроса
Алексей Соловьев
Меня немного не так поняли наверное. Да, при повор...

В реальных проектах пользователи навигируют туда-сюда много раз.

Leonid B.
В реальных проектах пользователи навигируют туда-с...

Леонид, как только сработает onDestroy, утечка будет исправлена после прохода GC

Алексей Соловьев
Меня немного не так поняли наверное. Да, при повор...

Опять ты со своими поворотами экрана, которые вообще ни при чём. И с утечкой, которой, о чудо, при определённых сценариях может не быть (см. календарный метод контрацепции).

Leonid-B. Автор вопроса
Алексей Соловьев
Леонид, как только сработает onDestroy, утечка буд...

К этому времени от космолета останутся одни запчасти.

Mike (деньги не клянчу)
Опять ты со своими поворотами экрана, которые вооб...

Ну рано или поздно onDestroy сработает, а то что лишний объект повесит в памяти чуть больше.. не че страшно

Алексей Соловьев
Меня немного не так поняли наверное. Да, при повор...

А можно тут поподробнее, почему много поворотов должно убить память? Насколько я знаю, поворот экрана полностью пересоздаёт всю Activity с её Fragment'ами. И под пересозданием я имею ввиду именно onDestroy/onCreate

Neurohacker
А можно тут поподробнее, почему много поворотов до...

Где ты прочитал, что много поворотов, что то должно убить

Алексей Соловьев
Где ты прочитал, что много поворотов, что то должн...

Тогда что ты имел в виду? "при повороте экрана, если в onDestroyView не занулять binding, то произойдёт утечка памяти"

Алексей Соловьев
Ну подумаешь, немного ошибся.

Немного ошибся, чуть-чуть обвинил одного из собеседников в злоупотреблении растворителями, развёл незначительный срачик, и, сославшись на время суток, слегка ретировался.

Mike (деньги не клянчу)
Немного ошибся, чуть-чуть обвинил одного из собесе...

От души, Миша. Моего здоровья уже не хватает на такое

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта