Флаттер - исследование памяти - PullRequest
2 голосов
/ 04 февраля 2020

Я использую Flutter для довольно большого (IMO) социального приложения. Я использую Firebase в качестве бэкэнда. Существует список просмотра временной шкалы с элементами списка, в которых есть фотография, аватар pi c ... структура, очень похожая на Facebook. Это в приложении с четырьмя вкладками. Другие 3 вкладки - это еще одна временная шкала, с такими же элементами списка. Страница профиля, которая довольно минимальна, и страница настроек, которая ОЧЕНЬ минимальна. Щелкнув элемент списка рассылки, вы попадете в подробный вид с одним изображением, изображением аватара, описанием и комментариями, загружаемыми по 10 одновременно, asyn c, через Firebase.

Моя проблема в том, что, наблюдая за тем, как он запускается на устройстве iOS, наблюдая за XCode, использование памяти (с использованием iPhone X) иногда возрастает до 2 гигабайт и в конечном итоге ударяет по давлению памяти и дает сбой.

Я не хочу начинать заново с нативного кода (Kotlin и Swift). С чего ты предлагаешь мне начать расследование? Я еще не использовал профилировщик Flutter. Но мне, даже если пользовательский интерфейс приятный, не похоже, что он должен быть таким уж тяжелым (особенно для нативного).

Может кто-нибудь предложить некоторые начальные процедурные шаги для исследования и устранения этих проблем с памятью?

Извините, я знаю, это большой вопрос. Но даже маленькие намеки, как я узнаю на go, являются благословением.

Спасибо!

1 Ответ

1 голос
/ 04 февраля 2020

Похоже, это может быть связано с этой проблемой , которая отслеживается на GitHub. Я настоятельно рекомендую запустить ваше приложение на реальном устройстве в режиме выпуска и посмотреть, сможете ли вы наблюдать такой же рост памяти. Если вы этого не сделаете, то, вероятно, стоит зарегистрировать проблему на GitHub или продолжить решение ранее упомянутой проблемы.

Если это действительно проблема с вашим приложением, у вас есть несколько вариантов, чтобы попытаться выяснить, почему вы теряете память.

Команда Flutter предоставляет инструмент под названием Dart DevTools , который полезен для отладки и профилирования ваших приложений Flutter. В частности, вы захотите проверить представление памяти , где вы можете отслеживать статистику роста памяти и определять, где объекты размещаются и на которые ссылаются.

Другой вариант - использовать Обсерватория , инструмент отладки, обслуживаемый виртуальной машиной Dart, встроенной в приложение Flutter в режиме отладки, и проверьте профиль выделения на наличие всего, что может выделиться. Обсерватория может быть немного сложнее в использовании, чем DevTools, так как она была разработана в основном для инженеров Dart VM, но она обеспечит как минимум такую ​​же функциональность, как DevTools.

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