I have integrated Leakcanary for the first time in my app, The trace is generated like the following. Can someone explain to me what does it mean?
02-16 12:06:21.272 14201-14490/com.myboxman.app D/LeakCanary: In com.myboxman.app:1.0:79.
02-16 12:06:21.272 14201-14490/com.myboxman.app D/LeakCanary: * com.fretbay.myboxman.activities.SplashActivity has leaked:
02-16 12:06:21.272 14201-14490/com.myboxman.app D/LeakCanary: * GC ROOT android.location.LocationManager$ListenerTransport.mListener
02-16 12:06:21.272 14201-14490/com.myboxman.app D/LeakCanary: * references helper.GPSTracker.mContext
02-16 12:06:21.272 14201-14490/com.myboxman.app D/LeakCanary: * leaks com.fretbay.myboxman.activities.SplashActivity instance
02-16 12:06:21.272 14201-14490/com.myboxman.app D/LeakCanary: * Retaining: 14MB.
02-16 12:06:21.272 14201-14490/com.myboxman.app D/LeakCanary: * Reference Key: e7c6cde6-bde2-4bc7-9aee-b5153bbed7cc
02-16 12:06:21.272 14201-14490/com.myboxman.app D/LeakCanary: * Device: LGE google Nexus 4 occam
02-16 12:06:21.272 14201-14490/com.myboxman.app D/LeakCanary: * Android Version: 5.1.1 API: 22 LeakCanary: 1.6-SNAPSHOT 05e6ee2
02-16 12:06:21.272 14201-14490/com.myboxman.app D/LeakCanary: * Durations: watch=5066ms, gc=211ms, heap dump=4524ms, analysis=50759ms
02-16 12:06:21.272 14201-14490/com.myboxman.app D/LeakCanary: * Details:
02-16 12:06:21.272 14201-14490/com.myboxman.app D/LeakCanary: * Instance of android.location.LocationManager$ListenerTransport
02-16 12:06:21.272 14201-14490/com.myboxman.app D/LeakCanary: | static TYPE_STATUS_CHANGED = 2
02-16 12:06:21.272 14201-14490/com.myboxman.app D/LeakCanary: | static TYPE_PROVIDER_DISABLED = 4
02-16 12:06:21.273 14201-14490/com.myboxman.app D/LeakCanary: | static TYPE_PROVIDER_ENABLED = 3
02-16 12:06:21.273 14201-14490/com.myboxman.app D/LeakCanary: | static TYPE_LOCATION_CHANGED = 1
02-16 12:06:21.273 14201-14490/com.myboxman.app D/LeakCanary: | static $staticOverhead = byte[32]@316027281 (0x12d63191)
This would be more informative:
In com.myboxman.app:1.0:79. * com.fretbay.myboxman.activities.SplashActivity has leaked: * GC ROOT android.location.LocationManager$ListenerTransport.mListener * references helper.GPSTracker.mContext * leaks com.fretbay.myboxman.activities.SplashActivity instance
- Retaining: 14MB.
- Reference Key: 7bf64f86-af48-4889-8a8c-517834d534a2
- Device: LGE google Nexus 4 occam
- Android Version: 5.1.1 API: 22 LeakCanary: 1.6-SNAPSHOT 05e6ee2
Durations: watch=5141ms, gc=177ms, heap dump=6491ms, analysis=54624ms
Details:
- Instance of android.location.LocationManager$ListenerTransport | static TYPE_STATUS_CHANGED = 2 | static TYPE_PROVIDER_DISABLED = 4 | static TYPE_PROVIDER_ENABLED = 3 | static TYPE_LOCATION_CHANGED = 1 | static $staticOverhead = byte[32]@316010897 (0x12d5f191) | mListener = helper.GPSTracker@314613680 (0x12c09fb0) | mListenerHandler = android.location.LocationManager$ListenerTransport$1@317068912 (0x12e61670) | this$0 = android.location.LocationManager@315092368 (0x12c7ed90) | mDescriptor = java.lang.String@1887341984 (0x707e8da0) | mObject = -1201831376 | mOwner = android.location.LocationManager$ListenerTransport@317068816 (0x12e61610)
- Instance of helper.GPSTracker | static MIN_DISTANCE_CHANGE_FOR_UPDATES = 100 | static $staticOverhead = byte[16]@316919809 (0x12e3d001) | static MIN_TIME_BW_UPDATES = 30000 | canGetLocation = true | isGPSEnabled = true | isNetworkEnabled = true | latitude = 33.5890017 | listener = null | location = android.location.Location@319020816 (0x1303df10) | locationManager = android.location.LocationManager@315092368 (0x12c7ed90) | longitude = 73.082723 | mContext = com.fretbay.myboxman.activities.SplashActivity@317117184 (0x12e6d300) | mActivityManager = null | mApplication = null | mClassName = null | mStartCompatibility = false | mThread = null | mToken = null | mBase = null
- Instance of com.fretbay.myboxman.activities.SplashActivity | static notificationType = null | static $staticOverhead = byte[8]@317112321 (0x12e6c001) | avloadingIndicatorView = com.wang.avi.AVLoadingIndicatorView@318891648 (0x1301e680) | client = null | common = helper.Common@315091792 (0x12c7eb50) | context = com.fretbay.myboxman.activities.SplashActivity@317117184 (0x12e6d300) | delay = 5000 | exceptionCounter = 0 | gpsTimer = null | gpsTracker = helper.GPSTracker@314613680 (0x12c09fb0) | initialDelay = 10000 | isDisconnected = false | isException = false | layUserNote = android.widget.LinearLayout@318826496 (0x1300e800) | marshMallowPermission = helper.MarshMallowPermission@314587200 (0x12c03840) | networkTimer = null | run = 0 | tvUserNote = helper.CustomFont@318828544 (0x1300f000) | mDelegate = android.support.v7.app.AppCompatDelegateImplV14@314865280 (0x12c47680) | mEatKeyUpEvent = false | mResources = null | mThemeId = 2131493020 | mCreated = true | mFragments = android.support.v4.app.FragmentController@317089376 (0x12e66660) | mHandler = android.support.v4.app.FragmentActivity$1@317087104 (0x12e65d80) | mMediaController = null | mNextCandidateRequestIndex = 0 | mOptionsMenuInvalidated = false | mPendingFragmentActivityResults = android.support.v4.util.SparseArrayCompat@317279296 (0x12e94c40) | mReallyStopped = true | mRequestedPermissionsFromFragment = false | mResumed = false | mRetaining = false | mStopped = true | mStartedActivityFromFragment = false | mStartedIntentSenderFromFragment = false | mActionBar = null | mActivityInfo = android.content.pm.ActivityInfo@315113600 (0x12c84080) | mActivityTransitionState = android.app.ActivityTransitionState@317057600 (0x12e5ea40) | mAllLoaderManagers = android.util.ArrayMap@317065888 (0x12e60aa0) | mApplication = helper.MyApplication@315164864 (0x12c908c0) | mCalled = true | mChangeCanvasToTranslucent = false | mChangingConfigurations = false | mCheckedForLoaderManager = true | mComponent = android.content.ComponentName@314999008 (0x12c680e0) | mConfigChangeFlags = 0 | mContainer = android.app.Activity$1@317089072 (0x12e66530) | mCurrentConfig = android.content.res.Configuration@317073056 (0x12e626a0) | mDecor = null | mDefaultKeyMode = 0 | mDefaultKeySsb = null | mDestroyed = true | mDoReportFullyDrawn = false | mEmbeddedID = null | mEnableDefaultActionBarUp = false | mEnterTransitionListener = android.app.SharedElementCallback$1@1894718984 (0x70ef1e08) | mExitTransitionListener = android.app.SharedElementCallback$1@1894718984 (0x70ef1e08) | mFinished = true | mFragments = android.app.FragmentManagerImpl@317109184 (0x12e6b3c0) | mHandler = android.os.Handler@317087072 (0x12e65d60) | mIdent = 788657300 | mInstanceTracker = android.os.StrictMode$InstanceTracker@317089088 (0x12e66540) | mInstrumentation = android.app.Instrumentation@315158784 (0x12c8f100) | mIntent = android.content.Intent@315101632 (0x12c811c0) | mLastNonConfigurationInstances = null | mLoaderManager = null | mLoadersStarted = false | mMainThread = android.app.ActivityThread@314855680 (0x12c45100) | mManagedCursors = java.util.ArrayList@317086976 (0x12e65d00) | mManagedDialogs = null | mMenuInflater = null | mParent = null | mReferrer = null | mResultCode = 0 | mResultData = null | mResumed = false | mSearchManager = null | mStartedActivity = false | mStopped = true | mTemporaryPause = false | mTitle = java.lang.String@317182112 (0x12e7d0a0) | mTitleColor = 0 | mTitleReady = true | mToken = android.os.BinderProxy@314993664 (0x12c66c00) | mTranslucentCallback = null | mUiThread = java.lang.Thread@1946976256 (0x740c8000) | mVisibleBehind = false | mVisibleFromClient = true | mVisibleFromServer = true | mVoiceInteractor = null | mWindow = com.android.internal.policy.impl.PhoneWindow@317186560 (0x12e7e200) | mWindowAdded = true | mWindowManager = android.view.WindowManagerImpl@317182880 (0x12e7d3a0) | mInflater = com.android.internal.policy.impl.PhoneLayoutInflater@317070352 (0x12e61c10) | mOverrideConfiguration = null | mResources = android.content.res.Resources@314603648 (0x12c07880) | mTheme = android.content.res.Resources$Theme@317182912 (0x12e7d3c0) | mThemeResource = 2131493020 | mBase = android.app.ContextImpl@317048448 (0x12e5c680)
- Excluded Refs: | Field: android.view.inputmethod.InputMethodManager.mNextServedView | Field: android.view.inputmethod.InputMethodManager.mServedView | Field: android.view.inputmethod.InputMethodManager.mServedInputConnection | Field: android.view.inputmethod.InputMethodManager.mCurRootView | Field: android.animation.LayoutTransition$1.val$parent | Field: android.view.textservice.SpellCheckerSession$1.this$0 | Field: android.support.v7.internal.widget.ActivityChooserModel.mActivityChoserModelPolicy | Field: android.widget.ActivityChooserModel.mActivityChoserModelPolicy | Field: android.accounts.AccountManager$AmsTask$Response.this$1 | Field: android.media.MediaScannerConnection.mContext | Field: android.os.UserManager.mContext | Field: android.media.AudioManager$1.this$0 | Field: android.widget.Editor$Blink.this$0 | Field: android.net.ConnectivityManager.sInstance | Field: android.view.Choreographer$FrameDisplayEventReceiver.mMessageQueue (always) | Static field: android.text.TextLine.sCached | Thread:FinalizerWatchdogDaemon (always) | Thread:main (always) | Thread:LeakCanary-Heap-Dump (always) | Class:java.lang.ref.WeakReference (always) | Class:java.lang.ref.SoftReference (always) | Class:java.lang.ref.PhantomReference (always) | Class:java.lang.ref.Finalizer (always) | Class:java.lang.ref.FinalizerReference (always)