Один из классов имеет много объектов, присутствующих в куче .NET, что было обнаружено с помощью следующей команды sos.
!dumpheap -stat -type MyClass
Statistics:
MT Count TotalSize Class Name
00007ff8e6253494 1700 164123 MyNameSpace.MyClass
Мне нужно найти экземпляры тех объектов, размер которых ObjSize превышает 5 МБ. Я знаю, что могу перечислить objsize всех 1700 экземпляров MyClass, используя следующее.
.foreach (res {!DumpHeap -short -MT 00007ff8e6253494 }) {.if ( (!objsize res) > 41943040) {.echo res; !objsize res}}
С приведенным выше сценарием я не получаю никаких результатов, хотя есть экземпляры объектов размером более 5 МБ. Я думаю, что проблема может быть в том, что вывод objsize выглядит следующим образом
20288 (0x4f40) bytes
Это строка, которая затрудняет сравнение с любым порогом. Как я могу заставить этот скрипт отображать только объекты, размер которых превышает 5 МБ?