Определите, сколько памяти использует класс? - PullRequest
8 голосов
/ 09 сентября 2008

Я пытаюсь найти способ во время выполнения определить, сколько памяти использует данный класс в .NET. Использование Marshal.SizeOf() запрещено, так как оно работает только для типов значений. Есть ли способ точно проверить, сколько памяти использует класс?

Ответы [ 3 ]

5 голосов
/ 09 сентября 2008

Я только недавно начал изучать подобные вещи, но обнаружил, что профилировщики памяти могут дать довольно подробную информацию о экземплярах объектов в вашем приложении.

Вот пара, которые стоит попробовать:

1 голос
/ 09 сентября 2008

просто ссылка на связанный вопрос SO:

1 голос
/ 09 сентября 2008

Я согласен, что профилировщик памяти - это самый простой способ получить информацию, которую вы ищете. В дополнение к двум ранее упомянутым, я рекомендую JetBrains dotTrace , который является одновременно и профилировщиком производительности, и профилировщиком памяти.

Если вы хотите сделать это самостоятельно и хотите получить достаточно глубокие знания о CLR, вы можете использовать .NET Profiling API , который является неуправляемым API (как говорит Microsoft ): "позволяет профилировщику контролировать выполнение программы с помощью общеязыковой среды выполнения (CLR)." Он не предназначен для повседневного использования, но обладает огромным количеством функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...