dji-sdk / Mobile-UXSDK-Android

DJI Mobile UXSDK is a suite of product agnostic UI objects that fast tracks the development of Android applications using the DJI Mobile SDK.
Other
152 stars 110 forks source link

Pre Flight Checklist Widget Memory Leak #118

Open jmadrigal47895 opened 3 years ago

jmadrigal47895 commented 3 years ago

So I found this leak in the preflight checklist as well. This leak seems like an observable is not being released for garbage collection or a context is being passed into an observable which is not allowing it to be collected. Hopefully this helps!

┬─── 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ GC Root: Input or output parameters in native code 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: ├─ okio.AsyncTimeout class 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Leaking: NO (PathClassLoader↓ is not leaking and a class is never leaking) 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ↓ static AsyncTimeout.$class$classLoader 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: ├─ dalvik.system.PathClassLoader instance 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Leaking: NO (LogicEventBus$LazyHolder↓ is not leaking and A ClassLoader is never leaking) 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ↓ ClassLoader.runtimeInternalObjects 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: ├─ java.lang.Object[] array 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Leaking: NO (LogicEventBus$LazyHolder↓ is not leaking) 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ↓ Object[].[7013] 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: ├─ dji.common.bus.LogicEventBus$LazyHolder class 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Leaking: NO (a class is never leaking) 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ↓ static LogicEventBus$LazyHolder.INSTANCE 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ~~~~ 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: ├─ dji.common.bus.BusFactory$CachingEventBus instance 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Leaking: UNKNOWN 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Retaining 394 B in 17 objects 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ↓ EventBus.subject 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ~~~ 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: ├─ dji.thirdparty.rx.subjects.BehaviorSubject instance 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Leaking: UNKNOWN 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Retaining 20 B in 1 objects 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ↓ Observable.onSubscribe 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ~~~ 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: ├─ dji.thirdparty.rx.subjects.SubjectSubscriptionManager instance 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Leaking: UNKNOWN 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Retaining 18.8 kB in 438 objects 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ↓ AtomicReference.value 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ~ 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: ├─ dji.thirdparty.rx.subjects.SubjectSubscriptionManager$State instance 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Leaking: UNKNOWN 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Retaining 18.8 kB in 436 objects 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ↓ SubjectSubscriptionManager$State.observers 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ~~~~~ 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: ├─ dji.thirdparty.rx.subjects.SubjectSubscriptionManager$SubjectObserver[] array 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Leaking: UNKNOWN 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Retaining 18.8 kB in 435 objects 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ↓ SubjectSubscriptionManager$SubjectObserver[].[7] 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ~~~ 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: ├─ dji.thirdparty.rx.subjects.SubjectSubscriptionManager$SubjectObserver instance 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Leaking: UNKNOWN 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Retaining 1.5 kB in 31 objects 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ↓ SubjectSubscriptionManager$SubjectObserver.actual 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ~~ 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: ├─ dji.thirdparty.rx.internal.operators.OperatorFilter$1 instance 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Leaking: UNKNOWN 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Retaining 1.5 kB in 30 objects 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Anonymous subclass of dji.thirdparty.rx.Subscriber 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ↓ Subscriber.subscriber 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ~~ 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: ├─ dji.thirdparty.rx.internal.operators.OperatorCast$1 instance 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Leaking: UNKNOWN 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Retaining 1.4 kB in 23 objects 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Anonymous subclass of dji.thirdparty.rx.Subscriber 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ↓ Subscriber.subscriber 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ~~ 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: ├─ dji.thirdparty.rx.internal.operators.OperatorOnBackpressureBuffer$BufferSubscriber instance 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Leaking: UNKNOWN 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Retaining 1.3 kB in 22 objects 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ↓ OperatorOnBackpressureBuffer$BufferSubscriber.child 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ~ 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: ├─ dji.thirdparty.rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber instance 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Leaking: UNKNOWN 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Retaining 1.2 kB in 16 objects 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ↓ OperatorObserveOn$ObserveOnSubscriber.child 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ~ 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: ├─ dji.thirdparty.rx.observers.SafeSubscriber instance 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Leaking: UNKNOWN 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Retaining 182 B in 8 objects 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ↓ SafeSubscriber.actual 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ~~ 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: ├─ dji.thirdparty.rx.Observable$27 instance 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Leaking: UNKNOWN 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Retaining 56 B in 2 objects 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Anonymous subclass of dji.thirdparty.rx.Subscriber 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ↓ Observable$27.val$onNext 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ~~ 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: ├─ dji.ux.panel.PreFlightCheckListPanel$2 instance 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Leaking: UNKNOWN 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Retaining 16 B in 1 objects 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Anonymous class implementing dji.thirdparty.rx.functions.Action1 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ↓ PreFlightCheckListPanel$2.this$0 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ~~ 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: ├─ dji.ux.panel.PreFlightCheckListPanel instance 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Leaking: YES (View.mContext references a destroyed activity) 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ Retaining 5.5 MB in 53654 objects 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ View not part of a window view hierarchy 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ View.mAttachInfo is null (view detached) 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ View.mID = R.id.preFlightChecklistPanel 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ View.mWindowAttachCount = 1 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ context instance of tech.fluidity.ftaviator.ui.activity.fly.FlyActivity with mDestroyed = true 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ mContext instance of tech.fluidity.ftaviator.ui.activity.fly.FlyActivity with mDestroyed = true 2021-03-12 13:09:36.312 31147-1334/tech.fluidity.ftaviator D/LeakCanary: │ ↓ SimpleFrameLayoutWidget.context

dji-dev commented 3 years ago

Agent comment from Luce Luo in Zendesk ticket #45148:

Dear Customer,

Thank you for contacting DJI. To help us collect questions in detail, please fill in the form below and we will handle this ticket once we have received it. https://formcrafts.com/a/dji-developer-feedback-en

Thanks,

Luce Luo DJI Dev Team

jmadrigal47895 commented 3 years ago

Ok I filled out the form, thanks for the prompt response!