Articles of мусора

Android Multithreading – WaitForGcToComplete после отправки приложения в фоновый режим

Я использую Android L для некоторых многопоточных операций, используя несколько ThreadPoolExecutors для запуска очередей AsyncTasks. Когда мое приложение выходит на задний план, я начинаю видеть многочисленные журналы для … I/art: WaitForGcToComplete blocked for ##.#####ms for cause XXXXX … со случайными … I/art: No such thread id for suspend: ### . Кажется очевидным, что что-то происходит, […]

Может ли сборщик мусора отменить выделение одного экземпляра? (И почему и как его избежать)

В Android у меня есть одноэлементный класс, но я не уверен, может ли сборщик мусора освободить его. Если сборщик мусора освободит мой класс singleton, как можно избежать его освобождения?

Как остановить чрезмерное создание объектов на телефонах Samsung?

У меня проблемы с анимацией, замедляющейся на многих телефонах Android от Samsung. Я проследил проблему, и это слишком много сбора мусора. Однако ни один из объектов не создается непосредственно моим кодом. Это трассировка стека из Allocation Tracker в DDMS. at com.samsung.android.multiwindow.MultiWindowStyle$1.createFromParcel(MultiWindowStyle.java:493) at com.samsung.android.multiwindow.MultiWindowStyle$1.createFromParcel(MultiWindowStyle.java:491) at com.samsung.android.multiwindow.IMultiWindowFacade$Stub$Proxy.getMultiWindowStyle(IMultiWindowFacade.java:499) at com.samsung.android.multiwindow.MultiWindowFacade.getMultiWindowStyle(MultiWindowFacade.java:81) at android.app.Activity.getMultiWindowStyle(Activity.java:4681) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1688) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1264) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6614) […]

Лучше ли использовать несколько SpanObjects или несколько TextViews в Android?

У меня есть ListView , у которого есть TextView и в каждом TextView несколько элементов, каждое из которых содержит краткое описание. Чтобы применять разные стили к элементам и описанию, я использую объекты с множественным диапазоном: ClickableSpan , ForegroundColorSpan , BackgroundColorSpan , AbsoluteSizeSpan и StyleSpan . В среднем ListView имеет 10 TextView s, и каждый TextView […]

Влияние «instanceof» в коде Android Java

Связано ли ключевое слово instanceof с этим относительно тяжелым воздействием на платформу Android (и, что более конкретно, на мобильные телефоны, работающие на Dalvik VM?

Почему TypedArray следует перерабатывать?

Этот ответ говорит мне, что вызов метода recycle() TypedArray позволяет собирать мусор. Мой вопрос в том, почему TypedArray определенно нужен метод для сбора мусора? Почему он не может просто ждать сбора мусора, как обычный объект?

Возможно ли для Android VM собирать статические переменные без уничтожения всего приложения Android?

(Название вводит в заблуждение, поскольку сборщики мусора собирают только объекты, но я нашел этот заголовок более простым) Предположим, у меня есть приложение Android со статической переменной с именем «userid» внутри класса Global (которое равно нулю при инициализации). Если я установил переменную «userid» на какое-то значение, определяющее жизненный цикл приложения Android, скажем Global.userid = «myid», возможно […]

SoftReference получает слишком ранний сбор мусора

Я нахожусь на пути к реализации механизма кэширования для моего приложения Android. Я использую SoftReference , как и многие примеры, которые я нашел. Проблема в том, что при прокрутке вверх или вниз в моем ListView большая часть изображений уже очищается. В LogCat я вижу, что мое приложение собирает мусор каждый раз, когда приложение загружает новые […]

Android-сборщик мусора Освобожденная память

Я работаю над приложением, которое обрабатывает множество ассигнований (порядка 4 млн. Удваивается и миллион классов). Я просматривал журналы сборщиков мусора, и я вижу, что разное количество памяти освобождается на разных устройствах. Например, у меня есть Moto X (2014), который заканчивается освобождением чуть более 312 МБ. У меня также есть Droid Bionic, который запускает тот же […]

Много GC при прокрутке ListView (с шаблоном держателя)

Это аналогичный вопрос, но решение не работает. Проблема в том, что прокрутка ListView очень вялая, что связано с множеством GC. Я использую шаблон держателя (просмотр кеширования), как вы можете видеть в приведенном ниже коде: public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.eventrow, parent, false); […]