@@ -87,36 +87,21 @@ private static void FindLeakedUnityObjects(SnapshotFile file)
87
87
var leakedTypes = new Dictionary < string , int > ( ) ;
88
88
foreach ( var managedClassInstance in unityEngineObjects )
89
89
{
90
- var fields = file . GetInstanceFieldInfoForTypeIndex ( managedClassInstance . TypeInfo . TypeIndex ) ;
91
- for ( var fieldNumber = 0 ; fieldNumber < fields . Length ; fieldNumber ++ )
90
+ if ( managedClassInstance . IsLeakedManagedShell ( file ) )
92
91
{
93
- var basicFieldInfoCache = fields [ fieldNumber ] ;
94
- var name = file . GetFieldName ( basicFieldInfoCache . FieldIndex ) ;
92
+ var typeName = file . GetTypeName ( managedClassInstance . TypeInfo . TypeIndex ) ;
95
93
96
- if ( name == "m_CachedPtr" )
97
- {
98
- var value = managedClassInstance . Fields [ fieldNumber ] ;
99
-
100
- if ( value is not IntegerFieldValue integerFieldValue )
101
- throw new Exception ( "Expected integer field value" ) ;
102
-
103
- if ( integerFieldValue . Value == 0 )
104
- {
105
- var typeName = file . GetTypeName ( managedClassInstance . TypeInfo . TypeIndex ) ;
94
+ str = $ "Found leaked managed object of type: { typeName } at memory address 0x{ managedClassInstance . ObjectAddress : X} ";
95
+ Console . WriteLine ( str ) ;
96
+ ret . AppendLine ( str ) ;
106
97
107
- str = $ "Found leaked managed object of type: { typeName } at memory address 0x{ managedClassInstance . ObjectAddress : X} ";
108
- Console . WriteLine ( str ) ;
109
- ret . AppendLine ( str ) ;
110
-
111
- str = $ " Retention Path: { managedClassInstance . GetFirstObservedRetentionPath ( file ) } ";
112
- Console . WriteLine ( str ) ;
113
- ret . AppendLine ( str ) ;
98
+ str = $ " Retention Path: { managedClassInstance . GetFirstObservedRetentionPath ( file ) } ";
99
+ Console . WriteLine ( str ) ;
100
+ ret . AppendLine ( str ) ;
114
101
115
- leakedTypes [ typeName ] = leakedTypes . GetValueOrDefault ( typeName ) + 1 ;
102
+ leakedTypes [ typeName ] = leakedTypes . GetValueOrDefault ( typeName ) + 1 ;
116
103
117
- numLeaked ++ ;
118
- }
119
- }
104
+ numLeaked ++ ;
120
105
}
121
106
}
122
107
@@ -131,4 +116,6 @@ private static void FindLeakedUnityObjects(SnapshotFile file)
131
116
132
117
File . WriteAllText ( "leaked_objects.txt" , ret . ToString ( ) ) ;
133
118
}
119
+
120
+
134
121
}
0 commit comments