摘要: 在C#中使用 new 运算符创建对象时,运行库都从托管堆为该对象分配内存。只要托管堆中有地址空间可用,运行库就会继续为新对象分配空间。 但是,内存不是无限大的。最终,垃圾回收器必须执行回收以释放一些内存。垃圾回收器优化引擎根据正在进行的分配情况确定执行回收的最佳时间。当垃圾回收器执行回收时,它检查托管堆中不再被应用程序使用的对象并执行必要的操作来回收它们占用的内存。 实例化新对象过程: 如图 首先、计算字段所需空间和对象所需空间。 对象所需空间包括两部分,同步块索引和类型对象指针。 再次、分配物理内存,新对象指针指象下一个可用内存区域。垃圾回收过程 如下图• 标记阶段:从根标记遍历到的对象。 阅读全文
posted @ 2011-07-30 13:25 贺俊峰 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 隔离应用程序的原因在于内存地址是与进程相关的,两个进程的内存不可以互相访问。 隔离进程的优点如下图:• 在一个应用程序中出现的错误不会影响其他应用程序。 • 能够在不停止整个进程的情况下停止单个应用程序。 • 在一个应用程序中运行的代码不能直接访问其他应用程序中的代码或资源。 • 代码行为的作用范围由它运行所在的应用程序决定。 • 向代码授予的权限可以由代码运行所在的应用程序域来控制。 阅读全文
posted @ 2011-07-30 13:11 贺俊峰 阅读(300) 评论(0) 推荐(0) 编辑