Q-->question        A-->answer        M-->mention
          The Chapter 20th Garbage Collection

Q:GC的工作原理?
  1.访问资源的步骤?
   (1) 调用IL中的newobj指令,为某个特定资源的类型分配一定的内存
   (2) 初始化分配到的内存,使资源可用(调用实例构造器)
   (3) 通过访问类型成员来使用资源(可反复进行)
   (4) 销毁资源状态,执行清理工作
   (5) 释放内存,GC独自负责这一步
  2.newobj指令导致的操作?
   (1) 计算类型所有字段(包含基类型所有字段),所需要的字节总数
   (2) 上述字节总数再加上对象开销所需字节数,包括类型对象指针及一个同步块索引.32位的应该为8个字节,64位的应用为16个字节.
   (3) CLR检查保留区域中的空间是否满足分配新对象所需的字节数,若是有足够空间,对象将被满足,对象被分配在NextObjPtr指针所指示的位置,newobj返回对象的地址前,nextPtr将前移

Q:何为托管堆?
A:当应用程序初始化完后,CLR将保留一段连续的地址空间,此段空间初始并不对应任何物理内存,该地址空间即为堆.

Q:GC有何作用?
A:1.不必再自己实现代码来管理应用程序中对象的生存期
  2.以前经常出现的两种BUG将不复存在(内存泄漏和访问已被释放的对象)

posted on 2007-06-26 16:43  晓木  阅读(130)  评论(0编辑  收藏  举报