Каков размер ссылки на объект в .NET? Это зависит от х86, x64 и/или компиляции AnyCPU?Насколько велика ссылка на объект в .NET?
Если это имеет значение, меня лично интересует C#.
Каков размер ссылки на объект в .NET? Это зависит от х86, x64 и/или компиляции AnyCPU?Насколько велика ссылка на объект в .NET?
Если это имеет значение, меня лично интересует C#.
Ссылка сама по себе является указателем. 32 бита на 32-битной ОС, 64 бит на 64-битной ОС.
Размер объекта, на который делается ссылка, является более сложным.
Вот что я понял - я просто хотел чтобы убедиться, что внутри среды не было больше времени. – arootbeer
Интересно, почему 64-разрядный .net использовал бы указатель, а не масштабированное смещение в таблицу «объекты»? 32-битное масштабированное смещение должно было быть достаточным для большинства приложений (приложениям, которым требуется более четырех объектов BILLION, может быть использована специальная модель памяти «superHumungous»), и я думаю, что небольшая дополнительная стоимость использования масштабированной адресации смещения будет больше чем компенсируется улучшенным параллелизмом кэш-памяти, что может быть связано с тем, что ссылки на объекты в два раза больше. – supercat
@supercat, разработчики .NET могут выбрать компиляцию своего приложения в 32-разрядный режим, и все указатели будут 32-битными. Это, вероятно, лучше всего для любого приложения, которому не нужны 64-битные указатели, что является подавляющим большинством приложений. –
Ссылка на объект в основном является указателем на память, которая содержит атрибуты объекта. Таким образом, ссылка представляет собой одно процессорное слово длиной - 32 бит на 32-битных платформах и 64 бит на x64.
Есть ли способ измерить, сколько памяти потребляет ** 'объект' **? – Shimmy
Для определения размера указателя вы можете использовать System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr))
, или sizeof(IntPtr)
в небезопасном контексте.
Edit:
Или IntPtr.Size
.
Не дубликат - я говорю о самых ссылках – arootbeer
[см родственного вопроса] [1] [1]: http://stackoverflow.com/questions/26570/sizeof-equivalent- for-reference-types –
Возможный дубликат [C# reference variable mem allocation] (http://stackoverflow.com/questions/489805/c-sharp-reference-variable-mem-allocation) – nawfal