Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/190: Рейтинг темы: голосов - 190, средняя оценка - 4.85
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1

Узнать сколько занимает памяти объект.

23.11.2010, 12:07. Показов 35878. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Кто нибудь в курсе, как можно узнать сколько "весит" экземпляр написанного мной класса? То есть мне нужно создать экземпляр класса и узнать, сколько он занимает памяти. ТАкое возможно?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.11.2010, 12:07
Ответы с готовыми решениями:

Узнать, какой объём оперативной памяти занимает приложение
Можно ли каким-нибудь кодом узнать какой объём оперативной памяти занимает приложение/класс? Сколько требует процессорного времени. Всё...

QuickSort: сколько дополнительной памяти он занимает
Всем доброго времени суток! Мне не даёт покоя QuickSort, всё хочется узнать сколько же он дополнительной памяти занимает? Много разных...

Сколько памяти занимает экземпляр StringBuilder?
Кто скажет Сколько реальной памяти занимает объект stringbuilder c# Например тип string Сколько памяти занимает объект строкового...

11
 Аватар для Бельфегор
688 / 602 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
23.11.2010, 13:11
Лучший ответ Сообщение было отмечено как решение

Решение

C#
1
2
3
4
5
6
7
long size = 0;
object obj = new object();
using (Stream stream = new MemoryStream()) {
    BinaryFormatter formatter = new BinaryFormatter();
    formatter.Serialize(stream, obj);
    size = stream.Length;
}
4
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
23.11.2010, 16:53
C#
1
Marshal.SizeOf
, но не сработает если используются строки и массивы.

В принципе если класс небольшой, то можно и устно посчитать )
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
23.11.2010, 17:30  [ТС]
Цитата Сообщение от SSTREGG Посмотреть сообщение
C#
1
Marshal.SizeOf
, но не сработает если используются строки и массивы.

В принципе если класс небольшой, то можно и устно посчитать )
Вот именно, что класс большой, который помимо полей встроенных типов и классов из Framework'a содержит мои классы в виде полей. Короче вручную при желании можно, но мне кажется проще кодом проверить. Тем более, что экземпляров может быть переменное кол-во... Точнее их и так переменное кол-во. А так можно было бы на определённый момент времени посмотреть, сколько кушают памяти объекты.
0
 Аватар для sigmov
585 / 372 / 63
Регистрация: 22.07.2009
Сообщений: 875
Записей в блоге: 4
24.11.2010, 08:05
Цитата Сообщение от Casper-SC Посмотреть сообщение
Вот именно, что класс большой, который помимо полей встроенных типов и классов из Framework'a содержит мои классы в виде полей. Короче вручную при желании можно, но мне кажется проще кодом проверить. Тем более, что экземпляров может быть переменное кол-во... Точнее их и так переменное кол-во. А так можно было бы на определённый момент времени посмотреть, сколько кушают памяти объекты.
Посчитать конечно можно.
Только нужно учитывать разницу м\у классами\структурами\массивами.
Если структуры аналогичны неуправляемый, то классы содержат еще 4\8 байт предваряющей информации, а массивы - данные о длине и границах.

P.S. Думаю серелизация - лучший выход.
2
62 / 51 / 15
Регистрация: 08.07.2010
Сообщений: 119
24.11.2010, 09:57
Только с сериализацией вы получите еще кучу служебной информации(название класса, полей...) и в итоге это будет не размер занимаемый объектом в памяти.
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
24.11.2010, 10:03  [ТС]
Цитата Сообщение от ivanoff80 Посмотреть сообщение
Только с сериализацией вы получите еще кучу служебной информации(название класса, полей...) и в итоге это будет не размер занимаемый объектом в памяти.
Кстати сериализация почему-то не сработала. Вылезло исключение, что класс не помечен как сериализуемый. Но я пометил его атрибутом [Serializable]
0
62 / 51 / 15
Регистрация: 08.07.2010
Сообщений: 119
24.11.2010, 10:15
Значит входят классы, которые не помечены как сериализуемые. Этот подход все равно неверный.
тут кое что есть http://blogs.msdn.com/b/mab/ar... 82666.aspx
1
 Аватар для sigmov
585 / 372 / 63
Регистрация: 22.07.2009
Сообщений: 875
Записей в блоге: 4
24.11.2010, 13:35
Цитата Сообщение от Casper-SC Посмотреть сообщение
Кстати сериализация почему-то не сработала. Вылезло исключение, что класс не помечен как сериализуемый. Но я пометил его атрибутом [Serializable]
Значит внутри есть несериализуемые классы.

Тогда придется Вам писать собственную рекурсивную функцию, которая будет разбирать класс до примитивных типов.

Кстати, очевидно что расположение вашего класса в памяти будет весьма фрагментированно. Зачем же Вам нужен его реальный размер?
0
 Аватар для Дилярочка
0 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 37
13.05.2014, 21:16
Добрый вечер! Как устно подсчитать объем памяти занимаемый одним объектом?
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9670 / 4823 / 762
Регистрация: 17.04.2012
Сообщений: 9,661
Записей в блоге: 14
14.05.2014, 17:38
Дилярочка, сумма размеров всех полей типа (грубо)
Например, массив из 50 Int32 занимает примерно 32 * 50 = 1600 бит
0
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,095
14.05.2014, 19:12
Цитата Сообщение от tezaurismosis Посмотреть сообщение
1600 бит
в битах оно конечно интереснее
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.05.2014, 19:12
Помогаю со студенческими работами здесь

Узнать сколько занимает переменная и напечатать в консоли
Что надо компилятору? Вроде все правильно. Хочу узнать сколько занимает переменная и напечатать в консоли. Но ошибка! Ошибка 1 Не...

Как определить сколько памяти занимает список?
Есть список в нем содержаться переменные класса разных типов... Как посчитать программно сколько памяти на данный момент занимает...

Узнать сколько памяти ест процесс
Есть запущенный процесс. Нужно спарсить сколько он кушает оперативки и вывести в текстбокс. Подскажите пожалуйста как это сделать?

Определить список объектов, созданных приложением и сколько памяти потребляет каждый объект
Всем привет! Кто знает как можно проанализировать своё приложение? Например: список объектов, созданных приложением и сколько памяти...

Как узнать сколько байтов в памяти занимает объект?
Есть ли в Java аналог sizeOf?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru