代码改变世界

内存管理总结

2009-09-22 14:02  cunhao  阅读(542)  评论(0编辑  收藏  举报

简单的总结  或许对初学者有用  主要自己做个备份

一 创建

1 值类型的创建

   在栈上分配内存,存储其数据成员。 如果是值类型, 直接存放在栈上;如果数据成员是引用类型,则在堆上存放该成员,栈上存放堆中该成员的地址。

2 引用类型创建( ObjectA a = new ObjectA () )

   在栈上分配内存,保存变量a, 在堆上分配空间保存数据成员, 同时把堆的相应地址赋给栈上的变量; 不管成员是引用类型还是值类型都存放在堆上。

二 销毁

1 栈上的对象

   直接销毁

2 堆上的对象

   .NET垃圾回收机制: 如果对象被其他对象引用,该对象不会被销毁, 当不再被其他对象引用时,垃圾回收器会将其回收销毁。

   如果被销毁的对象引用着其他对象,如果这些对象还被其他对象引用着,那么这些对象不会被回收,否则,这些对象也会被回收。