摘要:
问题:什么是装箱与拆箱?区别是什么?作用是什么?代码实现例子?解答: 第一点:装箱就是把值类型转换成引用类型的过程;反之拆箱就是引用类型转换在值类型的过程;值类型就是变量的数据存储在栈内存,就是变量名就是包括了数据;引用类型则是变量数据地址存在栈,地址指向堆内存,堆内存储存着真正数据,变量名是一个地址,指向堆内存地始位置;值类型变量当超出作用域时,内存自动回收,与堆则要等垃圾回收;值类型有:结构类(数据类型,bool,用户自定义结据),杖举,可空类型。引用类型有:自定义类,接口等;第二点;装箱可以explicit或implicit; 如object o = 3;object oo = (ob. 阅读全文
摘要:
部分资料引用:http://www.cnblogs.com/yuyijq/archive/2009/08/18/1549022.htmlhttp://www.cnblogs.com/yangecnu/archive/2013/02/19/Reference_Type_Internal.html问题: 什么同步索引? 作用?解答: 第一部分:同步索引块是在对象实例时在堆内存分配给实例的4个字节的块(32位);在实例对像时,真实分配情况是这样。而object header word 就是syncblockindex同步索引块;当lock对象与GetHashCode时,都修改块值。当只lock时.. 阅读全文
摘要:
问题:什么是值类型,什么是引用类型;值类型与引用类型的区别;为什么要分值类型与引用类型;解答: 第一部分: 值类型就是变量名就是变量的值;存于栈中;引用类型则是变量名在栈中保存一个内存地址指向堆中真实数据值;值类型有: 结构类(数据类型,bool,用户自定义结据,杖举,可空类型。引用类型有:自定义类,接口, 第二部分:主要是数据内存分配方式的不同,一种是栈一种是堆;以上两图是简单描述;int a = 3;int b = 4;a = b;拷贝方式是将b内存值,拷贝给a内存;这种赋值;class jia{public int a;} class jia j = new jia{a = 1;b... 阅读全文
摘要:
问题: 什么是栈?什么是堆? 区别? 为什么要分成两种内存方式?解答: 第一问: 栈编译器自动分配 ;堆是程序需要时,才分配;第二问:栈:由低地址向高分配,且内存大小有限,1到2M,可调整;在同一个栈中,内存连续,因此中同一个函数块中读不同的局部值类型数据,速度比堆快;堆:由高地址向地址分配,内存受限于系统虚拟内存,因此内存很大;由于变量名中在栈中分配4个字节存储堆的起始位,产生非数据内存,同样由于当需要堆内存时,系统是向管理堆内存的链表查询并分配,所以不同引用变量的堆地址不同,使程序询问速度减低。分配过程也耗时。栈有专业寄存器管理,堆则间接寻址。 第三问:主要是内存不确定性,当程序... 阅读全文