Каков объем потребляемой памяти объекта в Runtime в.NET?

Я заметил, что вы можете войти в систему как пользователь root, и CLI Mac OS X все равно будет требовать от вас ввода sudo для привилегированных операций. Кстати, вы, вероятно, должны использовать sudo от обычного администратора, а не от root.

6
задан Bullines 21 October 2008 в 20:51
поделиться

5 ответов

Вы, вероятно, просите что-то, что Вы могли назвать из своего кода (который я хотел бы знать также), но я чувствовал, что должен упомянуть профилировщика Муравьев [http://www.red-gate.com/Products/ants_profiler/index.htm] в случае, если другие не ищут что-то как конкретное. Это скажет Вам всем виды информации о Вашем коде, в то время как это выполняется включая то, сколько памяти используется.

С их веб-сайта...

Память профиля, чтобы понять, как Ваше приложение использует память, и определять местоположение утечек памяти. Профилировщик памяти позволяет Вам брать снимки в любой точке в осуществлении Вашей программы, таким образом, Вы видите, какая память используется в той точке. Можно взять несколько снимков в разное время, в то время как приложение работает, таким образом, можно сравнить состояния памяти приложения.

2
ответ дан 16 December 2019 в 21:48
поделиться

Попробуйте библиотеку отладки SOS. Лучше, чтобы было. Статьи здесь и здесь

2
ответ дан 16 December 2019 в 21:48
поделиться

Sizeof может использоваться на типах значения существует также Маршал. SizeOf, который может привыкнуть с некоторыми подсказками к.NET:

http://www.pixelicious.net/2008/07/03/exception-trying-to-get-the-size-of-a-c-class-using-marshalsizeof

Но... который не является точно общей стоимостью, так как время выполнения действительно выделяет дополнительные байты для классов для вещей как синхронизирующие блоки.

Если Вы действительно интересуетесь измерением этого типа вещи, однако, необходимо использовать профильный API:

http://msdn.microsoft.com/en-us/library/ms404386.aspx

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

3
ответ дан 16 December 2019 в 21:48
поделиться

Спасибо за ответы. Я думаю свой первоначальный план о нападении, потому что я уверен, что большинство объектов будет сериализуемым, будет что-то вроде этого:

using (MemoryStream memstream = new MemoryStream())
{
    BinaryFormatter formatter = new BinaryFormatter();

    try
    {
        formatter.Serialize(memstream, myObjectOfObjects);
        mem_footprint += memstream.Length;
    }
    catch 
    {
        // not a serializable object 
    }
}
0
ответ дан 16 December 2019 в 21:48
поделиться

Не без профилировщика. Это достаточно трудно только для единого класса - посмотрите здесь.

1
ответ дан 16 December 2019 в 21:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: