大小细节

来源:互联网 发布:淘宝医保卡套现方法 编辑:程序博客网 时间:2024/05/17 07:01

先说int的大小:32位上,第一位是1是负数,第一位是0是正数,

负数最小值可以用1000000...(31个0)来表示.但正值只能是01111...(31个1来表示)

所以最小的负数是 -2^31=-2147483648

最小的正数是 2^31=2147483648-1=2147483647

==============================================================

再研究一下.net object,每个object有一个overhead field,又由两部分构成:

  • type object pointer 在32位机器上,占32bit,就是4个byte
The type object pointer is a pointer to a type description of the object. 
This is used to find out what the actual type of an object is, for example needed to do virtual calls.
  • sync block index 占32bit,4byte   两者一共是8个bytes
The sync block index is an index into a table of synchronisation blocks.
it also used to generate object hashcode
 
CLR 分配额新对象内存的时候,就是在 newobjptr 指针指向的 heap 上分配,
不同于c 的内存分配,需要便利object linked list,看哪里有大的内存块,所以连续分配的obj,内存上可能是不连续的
CLR 是直接在newobjptr指针上分配,所以速度比较快,而且保证连续分配的对象,内存上是连续的。

================================================================




原创粉丝点击