Please, can anyone provide more detail on the figure from the "How the CLR Creates Runtime Objects" article?
I'm confused with "string literals" section, I'm not able to find any reason to store those as the part of every object instance and I even could not deduct what is really stored there:
#US (user string) stream record id? No, those emitted directly into IL as a ldstr param and are hardcoded into the JITted code at runtime. There's no need to store it as a part of each instance.
Runtime-interned instances? Again, no. First, they are usual object instances and the intern table is just a GC root used to keep the interned strings from being GC'ed. Second, there may be arbitrary number of runtime-interned strings, so we'll have no way to infer the Base Instance Size
Just a meaningless picture and the string literals (whatever the authors implied) are not stored as a part of the object instance? Don't know.