CLR Internal - ObjHeader
Every Object is preceded by an object header -ObjHeader (at a negative offset). ObjHeader is a DWORD and has a combination of different bit masks (defined in Syncblk.h) like hash code, AppDomain index, flags to facility string operations, thin lock bit and etc.
When the DWORD is not large enough, CLR will create a SyncBlock for the object and set the SyncBlock index in object header.