引用类型、值类型 理解
1,值类型继承自 ValueType,分配在线程栈上(除非值类型包裹在堆中,这个时候值类型就在堆上),用完自己会结束
2,引用类型分布在堆上(始终分配在堆上),一个进程只有一个堆,所有的数据都是往里面放,所以需要垃圾回收。
1)new 时,在堆中开辟内存,分配一个内存地址
2)调用构造函数(因为在构造函数里可以使用this)
3,装箱和拆箱通常是因为object
4,堆里面的内存是连续分配的
5,内存是链式分配,可能有碎片
6,垃圾回收时间:发生在new对象的时候(还有程序退出的时候),new一个对象时,看看空间够不够,不够的话就要GC回收了
7,static 变量不会被回收,静态持有的引用也不会被回收,GC.Collect() 主动回收 ,清理堆里的托管资源(C#创建的就是托管资源)就是GC
托管资源:在堆里的资源
非托管资源:不在堆中的资源,比如数据库连接
8,析构函数(如: `Student 符号【`】)与dispose :都是释放非托管资源
区别:析构函数由系统自动释放
dispose 则是使用者主动调用来释放