Closed ozbek closed 7 years ago
Got this from leakcanary, use "Jump" menu to reproduce locally. It is happening almost all the time.
In com.quran.labs.androidquran.debug:2.7.4-p1-debug:2741. * com.quran.labs.androidquran.ui.PagerActivity has leaked: * GC ROOT static android.view.WindowManagerGlobal.sDefaultWindowManager * references android.view.WindowManagerGlobal.mViews * references java.util.ArrayList.elementData * references array java.lang.Object[].[2] * references android.widget.PopupWindow$PopupDecorView.this$0 * references android.widget.PopupWindow.mExitTransition * references android.transition.Fade.mCurrentAnimators * references java.util.ArrayList.elementData * references array java.lang.Object[].[0] * references android.animation.ObjectAnimator.mListeners * references java.util.ArrayList.elementData * references array java.lang.Object[].[2] * references android.transition.Transition$2.this$0 (anonymous subclass of android.animation.AnimatorListenerAdapter) * references android.transition.Fade.mListeners * references java.util.ArrayList.elementData * references array java.lang.Object[].[1] * references android.transition.TransitionManager$MultiListener$1.val$runningTransitions (anonymous subclass of android.transition.Transition$TransitionListenerAdapter) * references android.util.ArrayMap.mArray * references array java.lang.Object[].[4] * references android.widget.PopupWindow$PopupDecorView.mContext * references android.view.ContextThemeWrapper.mBase * leaks com.quran.labs.androidquran.ui.PagerActivity instance * Retaining: 7,9 KB. * Reference Key: 6784a5c1-07de-4090-99a7-313a30c17b8b * Device: LGE google Nexus 5X bullhead * Android Version: 7.1.2 API: 25 LeakCanary: 1.5 00f37f5 * Durations: watch=5011ms, gc=138ms, heap dump=1824ms, analysis=158562ms * Details: * Class android.view.WindowManagerGlobal | static RELAYOUT_RES_CONSUME_ALWAYS_NAV_BAR = 64 | static ADD_APP_EXITING = -4 | static RELAYOUT_DEFER_SURFACE_DESTROY = 2 | static RELAYOUT_RES_IN_TOUCH_MODE = 1 | static RELAYOUT_RES_DRAG_RESIZING_DOCKED = 8 | static $classOverhead = byte[324]@1869558081 (0x6f6f3141) | static ADD_BAD_APP_TOKEN = -1 | static RELAYOUT_RES_FIRST_TIME = 2 | static RELAYOUT_RES_SURFACE_CHANGED = 4 | static RELAYOUT_RES_SURFACE_RESIZED = 32 | static RELAYOUT_INSETS_PENDING = 1 | static ADD_OKAY = 0 | static ADD_BAD_SUBWINDOW_TOKEN = -2 | static sWindowSession = android.view.IWindowSession$Stub$Proxy@852215632 (0x32cbc750) | static RELAYOUT_RES_DRAG_RESIZING_FREEFORM = 16 | static sDefaultWindowManager = android.view.WindowManagerGlobal@852026112 (0x32c8e300) | static ADD_NOT_APP_TOKEN = -3 | static ADD_FLAG_IN_TOUCH_MODE = 1 | static ADD_PERMISSION_DENIED = -8 | static ADD_MULTIPLE_SINGLETON = -7 | static ADD_STARTING_NOT_NEEDED = -6 | static ADD_INVALID_DISPLAY = -9 | static sWindowManagerService = android.view.IWindowManager$Stub$Proxy@852017344 (0x32c8c0c0) | static ADD_FLAG_APP_VISIBLE = 2 | static ADD_INVALID_TYPE = -10 | static TAG = java.lang.String@1871445504 (0x6f8bfe00) | static ADD_DUPLICATE_ADD = -5 | static ADD_FLAG_ALWAYS_CONSUME_NAV_BAR = 4 * Instance of android.view.WindowManagerGlobal | static RELAYOUT_RES_CONSUME_ALWAYS_NAV_BAR = 64 | static ADD_APP_EXITING = -4 | static RELAYOUT_DEFER_SURFACE_DESTROY = 2 | static RELAYOUT_RES_IN_TOUCH_MODE = 1 | static RELAYOUT_RES_DRAG_RESIZING_DOCKED = 8 | static $classOverhead = byte[324]@1869558081 (0x6f6f3141) | static ADD_BAD_APP_TOKEN = -1 | static RELAYOUT_RES_FIRST_TIME = 2 | static RELAYOUT_RES_SURFACE_CHANGED = 4 | static RELAYOUT_RES_SURFACE_RESIZED = 32 | static RELAYOUT_INSETS_PENDING = 1 | static ADD_OKAY = 0 | static ADD_BAD_SUBWINDOW_TOKEN = -2 | static sWindowSession = android.view.IWindowSession$Stub$Proxy@852215632 (0x32cbc750) | static RELAYOUT_RES_DRAG_RESIZING_FREEFORM = 16 | static sDefaultWindowManager = android.view.WindowManagerGlobal@852026112 (0x32c8e300) | static ADD_NOT_APP_TOKEN = -3 | static ADD_FLAG_IN_TOUCH_MODE = 1 | static ADD_PERMISSION_DENIED = -8 | static ADD_MULTIPLE_SINGLETON = -7 | static ADD_STARTING_NOT_NEEDED = -6 | static ADD_INVALID_DISPLAY = -9 | static sWindowManagerService = android.view.IWindowManager$Stub$Proxy@852017344 (0x32c8c0c0) | static ADD_FLAG_APP_VISIBLE = 2 | static ADD_INVALID_TYPE = -10 | static TAG = java.lang.String@1871445504 (0x6f8bfe00) | static ADD_DUPLICATE_ADD = -5 | static ADD_FLAG_ALWAYS_CONSUME_NAV_BAR = 4 | mDyingViews = android.util.ArraySet@852026144 (0x32c8e320) | mLock = java.lang.Object@852123760 (0x32ca6070) | mParams = java.util.ArrayList@852030632 (0x32c8f4a8) | mRoots = java.util.ArrayList@852030608 (0x32c8f490) | mSystemPropertyUpdater = android.view.WindowManagerGlobal$2@852215456 (0x32cbc6a0) | mViews = java.util.ArrayList@852030584 (0x32c8f478) | shadow$_klass_ = android.view.WindowManagerGlobal | shadow$_monitor_ = 0 * Instance of java.util.ArrayList | static serialVersionUID = 8683452581122892189 | static MAX_ARRAY_SIZE = 2147483639 | static DEFAULT_CAPACITY = 10 | static $classOverhead = byte[388]@1863932257 (0x6f195961) | static EMPTY_ELEMENTDATA = java.lang.Object[0]@1869156256 (0x6f690fa0) | elementData = java.lang.Object[10]@852419632 (0x32cee430) | size = 4 | modCount = 24 | shadow$_klass_ = java.util.ArrayList | shadow$_monitor_ = 0 * Array of java.lang.Object[] | [0] = com.android.internal.policy.DecorView@854881280 (0x32f47400) | [1] = com.android.internal.policy.DecorView@859569152 (0x333bfc00) | [2] = android.widget.PopupWindow$PopupDecorView@860521472 (0x334a8400) | [3] = android.widget.LinearLayout@858622976 (0x332d8c00) | [4] = null | [5] = null | [6] = null | [7] = null | [8] = null | [9] = null * Instance of android.widget.PopupWindow$PopupDecorView | static $classOverhead = byte[7040]@1869697905 (0x6f715371) | mOnAnchorRootDetachedListener = android.widget.PopupWindow$PopupDecorView$1@860490128 (0x334a0990) | mPendingExitListener = android.widget.PopupWindow$PopupDecorView$3@855239696 (0x32f9ec10) | this$0 = android.widget.PopupWindow@855641936 (0x33000f50) | mForegroundPaddingBottom = 0 | mForegroundPaddingLeft = 0 | mForegroundPaddingRight = 0 | mForegroundPaddingTop = 0 | mMatchParentChildren = java.util.ArrayList@860509664 (0x334a55e0) | mMeasureAllChildren = false | mAnimationListener = null | mCachePaint = null | mChildCountWithTransientState = 0 | mChildTransformation = null | mChildren = android.view.View[12]@860504576 (0x334a4200) | mChildrenCount = 1 | mChildrenInterestedInDrag = null | mCurrentDragChild = null | mCurrentDragStartEvent = null | mDisappearingChildren = null | mFirstHoverTarget = null | mFirstTouchTarget = null | mFocused = null | mGroupFlags = 2244688 | mHoveredSelf = false | mInvalidateRegion = null | mInvalidationTransformation = null | mIsInterestedInDrag = false | mLastTouchDownIndex = 0 | mLastTouchDownTime = 85888794 | mLastTouchDownX = 255.0 | mLastTouchDownY = 706.0 | mLayoutAnimationController = null | mLayoutCalledWhileSuppressed = false | mLayoutMode = -1 | mLayoutTransitionListener = android.view.ViewGroup$2@860490096 (0x334a0970) | mLocalPoint = null | mNestedScrollAxes = 0 | mOnHierarchyChangeListener = null | mPersistentDrawingCache = 2 | mPreSortedChildren = null | mSuppressLayout = true | mTempPoint = float[2]@851890456 (0x32c6d118) | mTransientIndices = null | mTransientViews = null | mTransition = null | mTransitioningViews = null | mVisibilityChangingChildren = null | mAccessibilityCursorPosition = -1 | mAccessibilityDelegate = null | mAccessibilityTraversalAfterId = -1 | mAccessibilityTraversalBeforeId = -1 | mAccessibilityViewId = -1 | mAnimator = null | mAttachInfo = android.view.View$AttachInfo@860027392 (0x3342fa00) | mAttributes = null | mBackground = null | mBackgroundRenderNode = null | mBackgroundResource = 0 | mBackgroundSizeChanged = true | mBackgroundTint = null | mBottom = 1512 | mCachingFailed = false | mClipBounds = null | mContentDescription = null | mContext = android.view.ContextThemeWrapper@859668832 (0x333d8160) | mCurrentAnimation = null | mDrawableState = int[2]@1869274696 (0x6f6ade48) | mDrawingCache = null | mDrawingCacheBackgroundColor = 0 | mFloatingTreeObserver = null | mForegroundInfo = null | mFrameMetricsObservers = null | mGhostView = null | mHasPerformedLongPress = false | mID = -1 | mIgnoreNextUpEvent = false | mInContextButtonPress = false | mInputEventConsistencyVerifier = null | mKeyedTags = android.util.SparseArray@860667088 (0x334cbcd0) | mLabelForId = -1 | mLastIsOpaque = false | mLayerPaint = null | mLayerType = 0 | mLayoutInsets = null | mLayoutParams = android.view.WindowManager$LayoutParams@860516576 (0x334a70e0) | mLeft = 0 | mLeftPaddingDefined = false | mListenerInfo = android.view.View$ListenerInfo@860604304 (0x334bc790) | mLongClickX = NaN | mLongClickY = NaN | mMatchIdPredicate = null | mMatchLabelForPredicate = null | mMeasureCache = android.util.LongSparseLongArray@860511872 (0x334a5e80) | mMeasuredHeight = 1512 | mMeasuredWidth = 782 | mMinHeight = 0 | mMinWidth = 0 | mNestedScrollingParent = null | mNextFocusDownId = -1 | mNextFocusForwardId = -1 | mNextFocusLeftId = -1 | mNextFocusRightId = -1 | mNextFocusUpId = -1 | mOldHeightMeasureSpec = 1073743336 | mOldWidthMeasureSpec = 1073742606 | mOutlineProvider = android.view.ViewOutlineProvider$1@1869333840 (0x6f6bc550) | mOverScrollMode = 1 | mOverlay = null | mPaddingBottom = 0 | mPaddingLeft = 0 | mPaddingRight = 0 | mPaddingTop = 0 | mParent = android.view.ViewRootImpl@859851808 (0x33404c20) | mPendingCheckForLongPress = null | mPendingCheckForTap = null | mPerformClick = null | mPointerIcon = null | mPrivateFlags = 16812208 | mPrivateFlags2 = 1611867680 | mPrivateFlags3 = 4 | mRecreateDisplayList = false | mRenderNode = android.view.RenderNode@860509640 (0x334a55c8) | mResources = android.content.res.Resources@859559944 (0x333bd808) | mRight = 782 | mRightPaddingDefined = false | mRoundScrollbarRenderer = null | mRunQueue = null | mScrollCache = null | mScrollIndicatorDrawable = null | mScrollX = 0 | mScrollY = 0 | mSendViewScrolledAccessibilityEvent = null | mSendViewStateChangedAccessibilityEvent = null | mSendingHoverAccessibilityEvents = false | mStartActivityRequestWho = null | mStateListAnimator = null | mSystemUiVisibility = 0 | mTag = null | mTempNestedScrollConsumed = null | mTop = 0 | mTouchDelegate = null | mTouchSlop = 21 | mTransformationInfo = android.view.View$TransformationInfo@860533256 (0x334ab208) | mTransientStateCount = 0 | mTransitionName = null | mUnscaledDrawingCache = null | mUnsetPressedState = null | mUserPaddingBottom = 0 | mUserPaddingEnd = -2147483648 | mUserPaddingLeft = 0 | mUserPaddingLeftInitial = 0 | mUserPaddingRight = 0 | mUserPaddingRightInitial = 0 | mUserPaddingStart = -2147483648 | mVerticalScrollFactor = 0.0 | mVerticalScrollbarPosition = 0 | mViewFlags = 402653312 | mWindowAttachCount = 1 | shadow$_klass_ = android.widget.PopupWindow$PopupDecorView | shadow$_monitor_ = -2139440868 * Instance of android.widget.PopupWindow | static INPUT_METHOD_NOT_NEEDED = 2 | static ANIMATION_STYLE_DEFAULT = -1 | static DEFAULT_ANCHORED_GRAVITY = 8388659 | static INPUT_METHOD_FROM_FOCUSABLE = 0 | static ABOVE_ANCHOR_STATE_SET = int[1]@1869485144 (0x6f6e1458) | static $classOverhead = byte[640]@1869629889 (0x6f7049c1) | static INPUT_METHOD_NEEDED = 1 | mAboveAnchor = false | mAboveAnchorBackgroundDrawable = null | mAllowScrollingAnchorParent = false | mAnchor = null | mAnchorRoot = null | mAnchorXoff = 0 | mAnchorYoff = 0 | mAnchoredGravity = 0 | mAnimationStyle = 0 | mAttachedInDecor = true | mAttachedInDecorSet = true | mBackground = android.graphics.drawable.GradientDrawable@859694072 (0x333de3f8) | mBackgroundView = android.widget.PopupWindow$PopupBackgroundView@860355584 (0x3347fc00) | mBelowAnchorBackgroundDrawable = null | mClipToScreen = true | mClippingEnabled = true | mContentView = android.widget.DropDownListView@855601152 (0x32ff7000) | mContext = android.view.ContextThemeWrapper@859668832 (0x333d8160) | mDecorView = android.widget.PopupWindow$PopupDecorView@860521472 (0x334a8400) | mElevation = 42.0 | mEnterTransition = android.transition.TransitionSet@859678208 (0x333da600) | mEpicenterBounds = null | mExitTransition = android.transition.Fade@859572976 (0x333c0af0) | mFocusable = true | mGravity = 0 | mHeight = 1512 | mHeightMode = 0 | mIgnoreCheekPress = false | mInputMethodMode = 2 | mIsAnchorRootAttached = false | mIsDropdown = true | mIsShowing = false | mIsTransitioningToDismiss = true | mLastHeight = 1512 | mLastWidth = 782 | mLayoutInScreen = false | mLayoutInsetDecor = false | mNotTouchModal = false | mOnAnchorRootDetachedListener = android.widget.PopupWindow$1@859705456 (0x333e1070) | mOnDismissListener = android.widget.Spinner$DropdownPopup$3@860490704 (0x334a0bd0) | mOnScrollChangedListener = android.widget.PopupWindow$2@859705472 (0x333e1080) | mOutsideTouchable = true | mOverlapAnchor = true | mPopupViewInitialLayoutDirectionInherited = true | mSoftInputMode = 1 | mSplitTouchEnabled = -1 | mTempRect = android.graphics.Rect@859690296 (0x333dd538) | mTmpDrawingLocation = int[2]@859690248 (0x333dd508) | mTmpScreenLocation = int[2]@859690272 (0x333dd520) | mTouchInterceptor = android.widget.ListPopupWindow$PopupTouchInterceptor@859578352 (0x333c1ff0) | mTouchable = true | mWidth = 782 | mWidthMode = 0 | mWindowLayoutType = 1002 | mWindowManager = android.view.WindowManagerImpl@859589504 (0x333c4b80) | shadow$_klass_ = android.widget.PopupWindow | shadow$_monitor_ = -1994245160 * Instance of android.transition.Fade | static IN = 1 | static PROPNAME_TRANSITION_ALPHA = java.lang.String@1871461648 (0x6f8c3d10) | static OUT = 2 | static $classOverhead = byte[705]@1869515849 (0x6f6e8c49) | static DBG = false | static LOG_TAG = java.lang.String@1870622952 (0x6f7f70e8) | mMode = 3 | mSuppressLayout = true | mAnimators = java.util.ArrayList@859691400 (0x333dd988) | mCanRemoveViews = false | mCurrentAnimators = java.util.ArrayList@859691376 (0x333dd970) | mDuration = 300 | mEndValues = android.transition.TransitionValuesMaps@859691304 (0x333dd928) | mEndValuesList = null | mEnded = false | mEpicenterCallback = null | mInterpolator = null | mListeners = null | mMatchOrder = int[4]@1869186648 (0x6f698658) | mName = java.lang.String@1871678200 (0x6f8f8af8) | mNameOverrides = null | mNumInstances = 0 | mParent = null | mPathMotion = android.transition.Transition$1@1869186680 (0x6f698678) | mPaused = false | mPropagation = null | mSceneRoot = null | mStartDelay = -1 | mStartValues = android.transition.TransitionValuesMaps@859691232 (0x333dd8e0) | mStartValuesList = null | mTargetChildExcludes = null | mTargetExcludes = null | mTargetIdChildExcludes = null | mTargetIdExcludes = null | mTargetIds = java.util.ArrayList@859691184 (0x333dd8b0) | mTargetNameExcludes = null | mTargetNames = null | mTargetTypeChildExcludes = null | mTargetTypeExcludes = null | mTargetTypes = null | mTargets = java.util.ArrayList@859691208 (0x333dd8c8) | shadow$_klass_ = android.transition.Fade | shadow$_monitor_ = 0 * Instance of java.util.ArrayList | static serialVersionUID = 8683452581122892189 | static MAX_ARRAY_SIZE = 2147483639 | static DEFAULT_CAPACITY = 10 | static $classOverhead = byte[388]@1863932257 (0x6f195961) | static EMPTY_ELEMENTDATA = java.lang.Object[0]@1869156256 (0x6f690fa0) | elementData = java.lang.Object[10]@856105528 (0x33072238) | size = 1 | modCount = 1 | shadow$_klass_ = java.util.ArrayList | shadow$_monitor_ = 0 * Array of java.lang.Object[] | [0] = android.animation.ObjectAnimator@854710144 (0x32f1d780) | [1] = null | [2] = null | [3] = null | [4] = null | [5] = null | [6] = null | [7] = null | [8] = null | [9] = null * Instance of android.animation.ObjectAnimator | static DBG = false | static $classOverhead = byte[645]@1870150585 (0x6f783bb9) | static LOG_TAG = java.lang.String@1870711576 (0x6f80cb18) | mAutoCancel = false | mProperty = null | mPropertyName = java.lang.String@1871536160 (0x6f8d6020) | mTarget = java.lang.ref.WeakReference@855429096 (0x32fccfe8) | mAnimationEndRequested = false | mCurrentFraction = 0.818712 | mDuration = 300 | mInitialized = true | mInterpolator = android.view.animation.AccelerateDecelerateInterpolator@1869462096 (0x6f6dba50) | mLastFrameTime = 85891325 | mOverallFraction = 0.72 | mPauseTime = 0 | mRepeatCount = 0 | mRepeatMode = 1 | mResumed = false | mReversing = false | mRunning = true | mSeekFraction = -1.0 | mStartDelay = 0 | mStartListenersCalled = true | mStartTime = 85891109 | mStartTimeCommitted = true | mStarted = true | mUpdateListeners = null | mValues = android.animation.PropertyValuesHolder[1]@855128688 (0x32f83a70) | mValuesMap = java.util.HashMap@857239272 (0x33186ee8) | mChangingConfigurations = 0 | mConstantState = null | mListeners = java.util.ArrayList@855428952 (0x32fccf58) | mPauseListeners = java.util.ArrayList@855428904 (0x32fccf28) | mPaused = false | shadow$_klass_ = android.animation.ObjectAnimator | shadow$_monitor_ = -1924030858 * Instance of java.util.ArrayList | static serialVersionUID = 8683452581122892189 | static MAX_ARRAY_SIZE = 2147483639 | static DEFAULT_CAPACITY = 10 | static $classOverhead = byte[388]@1863932257 (0x6f195961) | static EMPTY_ELEMENTDATA = java.lang.Object[0]@1869156256 (0x6f690fa0) | elementData = java.lang.Object[10]@856106144 (0x330724a0) | size = 4 | modCount = 4 | shadow$_klass_ = java.util.ArrayList | shadow$_monitor_ = 0 * Array of java.lang.Object[] | [0] = android.transition.Fade$FadeAnimatorListener@855128640 (0x32f83a40) | [1] = android.transition.Visibility$DisappearListener@855428928 (0x32fccf40) | [2] = android.transition.Transition$2@855128608 (0x32f83a20) | [3] = android.transition.Transition$3@855128592 (0x32f83a10) | [4] = null | [5] = null | [6] = null | [7] = null | [8] = null | [9] = null * Instance of android.transition.Transition$2 | static $classOverhead = byte[152]@856096193 (0x3306fdc1) | this$0 = android.transition.Fade@852099856 (0x32ca0310) | val$runningAnimators = android.util.ArrayMap@856244928 (0x330942c0) | shadow$_klass_ = android.transition.Transition$2 | shadow$_monitor_ = 0 * Instance of android.transition.Fade | static IN = 1 | static PROPNAME_TRANSITION_ALPHA = java.lang.String@1871461648 (0x6f8c3d10) | static OUT = 2 | static $classOverhead = byte[705]@1869515849 (0x6f6e8c49) | static DBG = false | static LOG_TAG = java.lang.String@1870622952 (0x6f7f70e8) | mMode = 3 | mSuppressLayout = true | mAnimators = java.util.ArrayList@855238664 (0x32f9e808) | mCanRemoveViews = false | mCurrentAnimators = java.util.ArrayList@859691376 (0x333dd970) | mDuration = 300 | mEndValues = android.transition.TransitionValuesMaps@855237296 (0x32f9e2b0) | mEndValuesList = java.util.ArrayList@855300728 (0x32fada78) | mEnded = false | mEpicenterCallback = android.widget.PopupWindow$PopupDecorView$4@855128912 (0x32f83b50) | mInterpolator = null | mListeners = java.util.ArrayList@855238904 (0x32f9e8f8) | mMatchOrder = int[4]@1869186648 (0x6f698658) | mName = java.lang.String@1871678200 (0x6f8f8af8) | mNameOverrides = null | mNumInstances = 1 | mParent = null | mPathMotion = android.transition.Transition$1@1869186680 (0x6f698678) | mPaused = false | mPropagation = null | mSceneRoot = null | mStartDelay = -1 | mStartValues = android.transition.TransitionValuesMaps@855238640 (0x32f9e7f0) | mStartValuesList = java.util.ArrayList@855300752 (0x32fada90) | mTargetChildExcludes = null | mTargetExcludes = null | mTargetIdChildExcludes = null | mTargetIdExcludes = null | mTargetIds = java.util.ArrayList@859691184 (0x333dd8b0) | mTargetNameExcludes = null | mTargetNames = null | mTargetTypeChildExcludes = null | mTargetTypeExcludes = null | mTargetTypes = null | mTargets = java.util.ArrayList@859691208 (0x333dd8c8) | shadow$_klass_ = android.transition.Fade | shadow$_monitor_ = 0 * Instance of java.util.ArrayList | static serialVersionUID = 8683452581122892189 | static MAX_ARRAY_SIZE = 2147483639 | static DEFAULT_CAPACITY = 10 | static $classOverhead = byte[388]@1863932257 (0x6f195961) | static EMPTY_ELEMENTDATA = java.lang.Object[0]@1869156256 (0x6f690fa0) | elementData = java.lang.Object[10]@856074328 (0x3306a858) | size = 4 | modCount = 4 | sh...
this is an AOSP issue and there's not much we can do about it (except fix it by reflection, but i don't see the need to really).
Got this from leakcanary, use "Jump" menu to reproduce locally. It is happening almost all the time.