Comments 22
Компилятор C# по умолчанию использует для членов классов размещение LayoutType.Auto, следовательно, загрузчик класса может расположить поля по своему усмотрению, чтобы минимизировать промежутки между полями.
Мне кажется, тут скорее, он будет пытаться оптимизировать: выравнивать по словам, например
Байты же не выровнял. Я тоже всегда думал, что все поля выравниваются по 4 байта, но по видимому всё хитрее. Интересно узнать свод правил, как JIT группирует поля в зависимости от их типа и размера. Понятно, что это внутренний механизм, который может поменяться в следующей версии, полагаться на него не стоит и всё такое.
Уж больно замысловатый у вас стиль изложения мыслей.
Замысловатый == слишком сложно воспринимается?)
Верно. Читается как черновик получившийся во время решения проблемы.
В первых обзацах я подумала, что пересказывают C# via CLR, но потом свелось всё к «а вот эту цифру можно увидеть вот тут и тут. Одна из низ означает бла-бла-бла».
Читая, я даже предположила, что вы занимаетесь написанием софта для мета-трейдеров (или как их там).
На мой взгляд, статья будет куда лучше восприниматся, если каждому из терминов (SyncBlock, Object Header итд.) дать точное определение.
А вы пишите следующее:
Object Header — Вновь взглянем на рисунок 1. Как видно, ObjectRef указывает на адрес, смещенный на 4 байта относительно начала ObjectInstance.
В привычных терминах, для автомобиля это бы звучало бы так:
Автомобиль — взгляните, у него есть развал и схождение. Они нужны для того, что бы он ехал.
Ну… как-то так.
В первых обзацах я подумала, что пересказывают C# via CLR, но потом свелось всё к «а вот эту цифру можно увидеть вот тут и тут. Одна из низ означает бла-бла-бла».
Читая, я даже предположила, что вы занимаетесь написанием софта для мета-трейдеров (или как их там).
На мой взгляд, статья будет куда лучше восприниматся, если каждому из терминов (SyncBlock, Object Header итд.) дать точное определение.
А вы пишите следующее:
Object Header — Вновь взглянем на рисунок 1. Как видно, ObjectRef указывает на адрес, смещенный на 4 байта относительно начала ObjectInstance.
В привычных терминах, для автомобиля это бы звучало бы так:
Автомобиль — взгляните, у него есть развал и схождение. Они нужны для того, что бы он ехал.
Ну… как-то так.
Значит нужно больше конкретики в начале, а не расплывчатой информации)
Спасибо!
Буду знать)
Спасибо!
Буду знать)
отличное техническое описание, что вы.
просто надо вникать, ибо тут популизмом не пахнет.
просто надо вникать, ибо тут популизмом не пахнет.
Тут, видимо, есть вкус и цвет, а следовательно — поспорим :) По мне, так такое внимание в первую очередь именно к деталям (развал и схождение, да — почему б и нет. Не всем же шашечки подавай) помогает получить представление всего образа в целом.
Материалы:MSDN
Наверно правильней сказать, что это не материалы, а оригинал статьи, которую вы попытались перевести. Во-первых, она гораздо полнее. А во-вторых, некоторым проще прочитать оригинал, чем перевод.
Да, если уж взялись переводить, то переводили бы уже всю статью, хотя бы по частям. А то получился кусок, частично выдернутый из контекста.
Конечно это все интересно знать, но неплохо бы было увидеть примеры, как такие знания можно применить.
А что означает «Размещение объектов на Run-time»?
Стоп. А что это может значит кроме фразы «Размещение объектов на Run-time».
Я не стебусь, просто пытаюсь понять: нет представления, что такое Run-time или сама фраза сформулирована неверно?
Я не стебусь, просто пытаюсь понять: нет представления, что такое Run-time или сама фраза сформулирована неверно?
По моему у меня в глазах двоится. Причем зеркально симметрично ОО.
Sign up to leave a comment.
.NET Частичка правды о размещении объектов на Run-time