Сколько памяти занимает ссылка на C#? Ли ссылки потребляют память столько же, сколько и самого объекта?Сколько памяти занимает ссылка на C#?
ответ
Ссылка реализована как указатель, поэтому в приложении, работающем в режиме x86 (32 бит), ссылка представляет собой четыре байта, а в режиме 64 (64 бит) эта ссылка составляет восемь байтов.
Поскольку ссылка является указателем на объект, эта ссылка имеет тот же размер независимо от того, на что она указывает, или даже если она не указывает на что-либо вообще (null).
Ссылка использует собственный размер слова платформы, на которой он работает.
То есть 32-разрядный: 32 бит. 64-бит: 64 бит.
Таким образом, нет .. ваш объект может быть переменным по размеру .. ссылка всегда будет такой, как указано выше.
От C# 5.0 in a Nutshell: The Definitive Reference страница 22;
Ссылочных типы требуют отдельного распределения памяти для ссылки и объекта. Объект потребляет столько байтов, сколько его полей, плюс дополнительные административные издержки. Точные накладные расходы - , по сути, частные для реализации среды выполнения .NET, но , как минимум, накладные расходы - восемь байтов, используемые для хранения ключа для типа объекта , а также временную информацию, такую как состояние блокировки для многопоточности и флаг, указывающий, было ли оно зафиксировано от перемещения сборщиком мусора. Для каждой ссылки на объект требуются дополнительные четыре или восемь байтов, в зависимости от того, выполняется ли среда выполнения .NET на 32- или 64-разрядной платформе.
- 1. Сколько памяти занимает программа C
- 2. Сколько памяти занимает константа C?
- 3. Сколько памяти занимает Enums?
- 4. Сколько памяти занимает строка
- 5. Сколько памяти занимает Python Pickle?
- 6. Сколько памяти занимает int [n] []?
- 7. Сколько памяти занимает пустое значение?
- 8. (iphone) Сколько памяти занимает UIImage?
- 9. Сколько памяти занимает поток Tomcat?
- 10. Сколько памяти занимает один ViewController?
- 11. Выясните, сколько памяти занимает операция
- 12. Python: Сколько памяти занимает атрибут?
- 13. Распределение памяти: сколько места занимает эта ссылка в Java?
- 14. Сколько байтов занимает этот массив в памяти?
- 15. Сколько памяти занимает каждый процесс android?
- 16. Сколько памяти занимает apache solr до фиксации
- 17. Как узнать, сколько памяти занимает структура?
- 18. Как узнать, сколько памяти занимает экземпляр класса C++?
- 19. Сколько времени занимает класс java в памяти
- 20. Сколько памяти занимает int x [10]?
- 21. Сколько памяти занимает Массив [Byte] в Scala?
- 22. Сколько памяти занимает моя нить java?
- 23. Сколько памяти занимает нить в java
- 24. Java: сколько занимает «длинный» номер в памяти?
- 25. Сколько байтов занимает адрес?
- 26. Узнайте, сколько памяти используется объектом в C#?
- 27. Сколько времени занимает изображение?
- 28. Сколько байтов занимает указатели?
- 29. Сколько места занимает TextView
- 30. Сколько места на складе занимает следующее место?
Я собирался ответить на этот вопрос, но я остановился, когда я начал задаваться вопросом, что, безусловно, должны быть некоторые дополнительные накладные расходы памяти участвует в создании и поддержании ссылки за пределы самого указателя. – Ashigore
@Ashigore: На самом деле в ссылке нет накладных расходов, это всего лишь указатель. Любые служебные данные связаны с объектом, например с информацией о типе и ссылками на сбор мусора. – Guffa
Интересно, спасибо за это. – Ashigore