Skip to content

Commit a8b2746

Browse files
authored
Merge pull request #2604 from square/2.x/py/stubs_are_dumb
Point the finger to stubs
2 parents 31e807d + 31f7c49 commit a8b2746

2 files changed

Lines changed: 14 additions & 0 deletions

File tree

shark-android/api/shark-android.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public abstract class shark/AndroidObjectInspectors : java/lang/Enum, shark/Obje
4747
public static final field OBJECT_ANIMATOR Lshark/AndroidObjectInspectors;
4848
public static final field RECOMPOSER Lshark/AndroidObjectInspectors;
4949
public static final field SERVICE Lshark/AndroidObjectInspectors;
50+
public static final field STUB Lshark/AndroidObjectInspectors;
5051
public static final field SUPPORT_FRAGMENT Lshark/AndroidObjectInspectors;
5152
public static final field TOAST Lshark/AndroidObjectInspectors;
5253
public static final field VIEW Lshark/AndroidObjectInspectors;

shark-android/src/main/java/shark/AndroidObjectInspectors.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -870,6 +870,19 @@ enum class AndroidObjectInspectors : ObjectInspector {
870870
return state["java.lang.Enum", "name"]!!.value.readAsJavaString()!!
871871
}
872872
},
873+
874+
STUB {
875+
override fun inspect(reporter: ObjectReporter) {
876+
reporter.whenInstanceOf("android.os.Binder") { instance ->
877+
labels + "${instance.instanceClassSimpleName} is a binder stub. Binder stubs will often be" +
878+
" retained long after the associated activity or service is destroyed, as by design stubs" +
879+
" are retained until the other side gets GCed. If ${instance.instanceClassSimpleName} is" +
880+
" not a *static* inner class then that's most likely the root cause of this leak. Make" +
881+
" it static. If ${instance.instanceClassSimpleName} is an Android Framework class, file" +
882+
" a ticket here: https://issuetracker.google.com/issues/new?component=192705"
883+
}
884+
}
885+
},
873886
;
874887

875888
internal open val leakingObjectFilter: ((heapObject: HeapObject) -> Boolean)? = null

0 commit comments

Comments
 (0)