I am looking into the ever growing problem with LambdaExpression cache in Find, as reported here https://world.episerver.com/forum/developer-forum/Problems-and-bugs/Thread-Container/2019/9/episerver-find-lambdaexpressionextensions-_cache-keeps-growing-indefinately/ . One important part of analyzing cache is to understand how many items are in cache, and how is the cache hit ratio. I have received the memory dumps from our partners, time to fire up some Windbg. Luckily for us that is stored in the class as fields. Unluckily for us, the class in question is a static one, it is when you find out !dumpheap -type
is not working for you.
The right way would be to use !name2ee
0:000> !name2ee episerver.find.dll EPiServer.Find.LambdaExpressionExtensions
Module: 00007ffd770bef80
Assembly: EPiServer.Find.dll
Token: 000000000200000d
MethodTable: 00007ffd79c998e8
EEClass: 00007ffd79c8d268
Name: EPiServer.Find.LambdaExpressionExtensions
!name2ee takes two parameters, the first one is the module name (basically the name of the assembly), and the second one is the name of the class. It is important to note that the class name is case sensitive, so you have to give it name with correct casing.
Now you have the EEClass
and you just need to dump it using !Dumpclass
0:000> !DumpClass /d 00007ffd79c8d268
Class Name: EPiServer.Find.LambdaExpressionExtensions
mdToken: 000000000200000d
File: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root5a589a\ddb1376c\assembly\dl3c581390:000> !DumpClass /d 00007ffd79c8d268
Class Name: EPiServer.Find.LambdaExpressionExtensions
mdToken: 000000000200000d
File: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\775a589a\ddb1376c\assembly\dl3\26c58139\00ecff94_a3aed501\EPiServer.Find.dll
Parent Class: 00007ffd76045498
Module: 00007ffd770bef80
Method Table: 00007ffd79c998e8
Vtable Slots: 4
Total Method Slots: 7
Class Attributes: 100181 Abstract,
Transparency: Critical
NumInstanceFields: 0
NumStaticFields: 3
MT Field Offset Type VT Attr Value Name
00007ffd7d0c4e28 4000009 8 ...egate, mscorlib]] 0 static 000001e6008e6768 _cache
00007ffd760d0d90 400000a 398 System.Int64 1 static 87633 _compiles
00007ffd760d0d90 400000b 3a0 System.Int64 1 static 34738206 _calls
ecff94_a3aed501\EPiServer.Find.dll
Parent Class: 00007ffd76045498
Module: 00007ffd770bef80
Method Table: 00007ffd79c998e8
Vtable Slots: 4
Total Method Slots: 7
Class Attributes: 100181 Abstract,
Transparency: Critical
NumInstanceFields: 0
NumStaticFields: 3
MT Field Offset Type VT Attr Value Name
00007ffd7d0c4e28 4000009 8 ...egate, mscorlib]] 0 static 000001e6008e6768 _cache
00007ffd760d0d90 400000a 398 System.Int64 1 static 87633 _compiles
00007ffd760d0d90 400000b 3a0 System.Int64 1 static 34738206 _calls
And voilĂ !