值类型是否像引用类型一样保留类型指针 + 同步根 + 静态字段

本文关键字:类型 指针 保留 同步 字段 静态 一样 是否 引用类型 | 更新日期: 2023-09-27 18:33:02

值类型是否像引用类型一样保留类型指针 + 同步根 + 静态字段?这个问题是以下问题的扩展版本:do-value-types-have-type-objects。谁能澄清一下:

  • 值类型是否在 CLR 堆中存储了相关的 System.Type-对象?
  • 如果没有关联的类型对象,值类型静态字段方法存储在哪里?
  • 值类型是否具有同步根
  • 字段(如果没有同步块,值类型是否线程安全(?

值类型是否像引用类型一样保留类型指针 + 同步根 + 静态字段

值类型是否在 CLR 堆中存储了相关的类型对象?

不,没有。结构没有与之关联的标头,并且不会随它一起存储任何类型信息。如果您询问System.Type,是的,类型元数据将在堆中。但它不会预先创建。

值类型静态字段的存储位置(如果没有关联的字段( 在线程堆栈中键入对象?

无论 ValueType 还是 ReferenceType,静态字段都存储在称为"高频堆"的特殊堆中,每个 AppDomain 都有一个。与"垃圾回收堆"不同,此堆不是垃圾回收。

每个静态变量都存储在堆上,无论是否 它在引用类型或值类型中声明。只有 无论创建多少个实例,总共一个插槽。(那里 不需要为该插槽创建任何实例即可存在 虽然。请注意,此堆与普通垃圾是分开的 收集的堆 - 它被称为"高频堆",并且有 每个应用程序域一个。

以上引用乔恩·斯基特

值类型是否具有同步根字段(如果没有同步根,值类型是否线程安全(?

不知道你在这里问什么。如果你的意思是SyncBlock而不是Sync-Root,它与线程安全无关。