2011年9月19日

关于CLR内存管理一些深层次的讨论[下篇]

摘要: 关于CLR内存管理一些深层次的讨论[下篇]《上篇》中我们主要讨论的是程序集(Assembly)和应用程序域(AppDomain)的话题,着重介绍了两个不同的程序集加载方式——独占方式和共享方式(中立域方式);以及基于进程范围内的字符串驻留。这篇将关注点放在托管对象创建时内存的分配和对大对象(LO:Large Object)的回收上,不对之处,还望各位能够及时指出。目录 一、从类型(Type)与实例(Instance)谈起 二、实例内存分配不仅限于GC堆 三、实例对类型的引用 四、LOH中的对象如何被回收一、从类型(Type)与实例(Instance)谈起在面向对象的世界中,类型和实例是两个核心 阅读全文

posted @ 2011-09-19 22:41 Jimmy.x.zhou 阅读(197) 评论(0) 推荐(0) 编辑

关于CLR内存管理一些深层次的讨论[上篇]

摘要: 一、程序集与应用程序域何谓程序集(Assembly)?它是一个托管应用的基本的部署单元。一个程序集是自描述的(通过元数据)、能够实施版本策略和部署策略。我倾向于这样的方式来定义程序集:“Assembly is a reusable, versionable, and self-describing building block of a CLR application.”从结构组成来看,一个程序集主要由三个部署组成:IL指令、元数据和资源。程序集的结构组成如下图所示。那么什么又是应用程序域呢?从功能上讲,通过应用程序域实现的隔离机制为托管代码的执行提供了一个安全的边界。从与程序集的关系来讲,我 阅读全文

posted @ 2011-09-19 09:37 Jimmy.x.zhou 阅读(187) 评论(0) 推荐(0) 编辑

导航