当前位置: 首页 > news >正文

怎么用iapp做网站软件东莞网站运营知名乐云seo

怎么用iapp做网站软件,东莞网站运营知名乐云seo,网络工程和软件工程哪个好,南通经济开发区城乡建设局网站在.NET中#xff0c;理解对象的内存布局是非常重要的#xff0c;这将帮助我们更好地理解.NET的运行机制和优化代码#xff0c;本文将介绍.NET中的对象内存布局。 .NET中的数据类型主要分为两类#xff0c;值类型和引用类型。值类型包括了基本类型(如int、bool、double、cha… 在.NET中理解对象的内存布局是非常重要的这将帮助我们更好地理解.NET的运行机制和优化代码本文将介绍.NET中的对象内存布局。 .NET中的数据类型主要分为两类值类型和引用类型。值类型包括了基本类型(如int、bool、double、char等)、枚举类型(enum)、结构体类型(struct)它们直接存储值。引用类型则包括了类(class)、接口(interface)、委托(delegate)、数组(array)等它们存储的是值的引用(数据在内存中的地址)。 值类型的内存布局 值类型的内存布局是顺序的并且是紧凑的。例如定义的结构体SampleStruct其中包含了四个int类型字段每个字段占用4个字节因此整个SampleStruct结构体在内存中占用16个字节。 public struct SampleStruct {public int Value1; public int Value2;public int Value3;public int Value4; } 它在内存中的布局如下 引用类型的内存布局 引用类型的内存布局则更为复杂。首先每个对象都有一个对象头其中包含了同步块索引和类型句柄等信息。同步块索引用于支持线程同步类型句柄则指向该对象的类型元数据。然后每个字段都按照它们在源代码中的顺序进行存储。 例如下面的类 public class SampleStruct {public int Value1; public int Value2;public int Value3;public int Value4; } 它在内存中的布局如下 在.NET中每个对象都包含一个对象头(Object Header)和一个方法表(Method Table)。 对象头存储了对象的元信息如类型信息、哈希码、GC信息和同步块索引等。对象头的大小是固定的无论对象的大小如何对象头都只占用8字节(在64位系统中)或4字节(在32位系统中)。方法表这是.NET用于存储对象的类型信息和方法元数据的数据结构。每个对象的类型包括其类名、父类、接口、方法等都会被存储在MethodTable中。 在32位系统中对象头和方法表指针各占4字节因此每个对象至少占用12字节的空间(不包括对象的实例字段)。在64位系统中由于指针的大小是8字节但只有后4个字节被使用每个对象至少占用24字节的空间(不包括对象的实例字段)。 每个.NET对象的头部都包含一个指向同步块的索引(Sync Block Index)和一个指向类型的指针(Type Pointer)。 Sync Block Index: 是一个指向同步块的索引。同步块用于存储对象锁定和线程同步信息的结构。当你对一个对象使用lock关键字或Monitor类进行同步时会用到同步块。如果对象未被锁定那么这个索引通常是0。Type Pointer: 是一个指向对象类型MethodTable的指针。 字段按照源代码中的顺序存储。值类型的字段直接存储值引用类型的字段存储的是对值的引用即指针。在32位系统中指针占用4个字节而在64位系统中指针占用8个字节。可以通过StructLayoutAttribute来自定义.NET中的对象内存布局。例如通过Sequential参数可以保证字段的内存布局顺序与源代码中的相同或者通过Explicit参数来手动指定每个字段的偏移量。实例成员需要8字节对齐即使没有任何成员也需要8个字节。 堆上分配对象的最小占用空间 // The generational GC requires that every object be at least 12 bytes in size. #define MIN_OBJECT_SIZE (2*TARGET_POINTER_SIZE OBJHEADER_SIZE) 进阶 在.NET中对象在内存中的布局是由运行时环境自动管理的。而对于结构体我们可以通过System.Runtime.InteropServices命名空间的StructLayout属性来设置其在内存中的布局方式。 LayoutKind.Auto这是类和结构的默认布局方式。在这种方式下运行时会自动选择合适的布局。LayoutKind.Sequential在这种方式下字段在内存中的顺序将严格按照它们在代码中的声明顺序。LayoutKind.Explicit这种方式允许你显式定义每个字段在内存中的偏移量。 以下是一个例子它定义了一个名为SampleStruct的结构体并使用了StructLayout属性来设置其布局方式。 [System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)] public struct SampleStruct {public byte X;public double Y;public int Z; } 在这个例子中我们可以使用ObjectLayoutInspector库来查看SampleStruct在内存中的布局。 void Main() {TypeLayout.PrintLayoutSampleStruct(); } 上述代码的输出如下值得注意的是使用System.Runtime.InteropServices命名空间的StructLayout属性将结构的布局设置为Sequential。这意味着在内存中结构的布局是按照在结构中声明的字段的顺序进行的。 Type layout for SampleStruct Size: 24 bytes. Paddings: 11 bytes (%45 of empty space) || | 0: Byte X (1 byte) | |---------------------------| | 1-7: padding (7 bytes) | |---------------------------| | 8-15: Double Y (8 bytes) | |---------------------------| | 16-19: Int32 Z (4 bytes) | |---------------------------| | 20-23: padding (4 bytes) | || 这里我们可以看到SampleStruct在内存中的具体布局首先是X字段(占用1个字节)然后是7个字节的填充接着是Y字段(占用8个字节)然后是Z字段(占用4个字节)最后是4个字节的填充。总共占用24个字节其中11个字节是填充。 这个例子中我们将结构体SampleStruct的布局设置为Auto。在这种方式下运行时环境会自动进行布局可能会对字段进行重新排序或在字段之间添加填充以使他们与内存边界对齐。 [System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Auto)] public struct SampleStruct {public byte X;public double Y;public int Z; } 如下所示再来检查SampleStruct在内存中的布局 Type layout for SampleStruct Size: 16 bytes. Paddings: 3 bytes (%18 of empty space) || | 0-7: Double Y (8 bytes) | |---------------------------| | 8-11: Int32 Z (4 bytes) | |---------------------------| | 12: Byte X (1 byte) | |---------------------------| | 13-15: padding (3 bytes) | || 从输出结果可以看出运行时环境对字段进行了重新排序并在字段之间添加了填充。首先是Y字段(占用8个字节)然后是Z字段(占用4个字节)接着是X字段(占用1个字节)最后是3个字节的填充。总共占用16个字节其中3个字节是填充。这种布局方式有效地减少了填充带来的空间浪费并可能提高内存访问效率。
http://www.eeditor.cn/news/122739/

相关文章:

  • 网站编程技术有哪些网页设计与网站建设从入门到精通
  • 做网站用asp还是php好互联网应用有哪些?
  • 类似百科式的网站建设wordpress 添加缩略图
  • 网站建设知识库wordpress浏览pdf
  • 河北企业建网站wordpress rss小工具
  • 企业为何要做网站wordpress主题如何导入演示
  • 网站空间报价单做网站龙岗
  • 网站点击率高长沙网站seo多少钱
  • 南京网站推广营销公司哪家好网站建设管理的规章制度
  • 交互效果好的网站网站建设需要学编程么
  • 怎么做乞讨网站vs做网站怎么添加子页
  • 设计师素材网站e网站建设与管理(第2版)
  • 百度关键词热搜商城网站不易优化
  • 电商网站开发分析昆明官网seo厂家
  • 大冶专业建站公司上海网站建设的企业
  • 东莞常平有高铁站吗医院网站建设与维护题库
  • 科技网站建设 长沙三亚市住房与城乡建设局网站
  • 电机东莞网站建设wordpress怎么把category
  • 怎么看一个网站做没做优化wordpress导航文件
  • 淄博网站制作定制技术谷歌英文网站优化
  • 做网站开发多少钱做网站需要会哪些计算机语言
  • 网站用户体验模型江苏荣邦建设有限公司网站
  • 网站建设的四个步骤小学学校网站模板免费下载
  • 上海网站设计成功柚v米科技1元购类似网站架设药多少钱
  • 劳力士手表网站免费主页空间申请网站
  • 北京大良网站建设wordpress 404判断
  • 谁知道做网站的电话河南省新闻出版培训中心
  • 一个单位网站被黑该怎么做做网站要给ftp密码吗
  • 网站的交互设计包括哪些郑州住房城乡建设局
  • 怎么做网站的效果图应届毕业生招聘官网