.Net 对象生命周期由浅入深1

在聊.Net 对象生命周期之前首先说说内存:

内存是对象赖以生存的介质,内存是由大量的晶体管组成的,每个晶体管代表一个位(bit),一个位只有两个值:0或1;一般内存大小最小单位是一个字节,单位是比特(Byte),一个Byte是由8个位组成的:1 Byte=8 bit;那一个字节的大小最小值是8个0(二进制),最大值是8个1(二进制),对应十进制大小是0到255

如下图16*8的矩阵模拟可以想象成一个内存条,每一个方格代表一个晶体管;总共有128个晶体管即128个位,每8个位一个字节就是16个字节,大小就是16Byte;

那一个8G的内存条有多少个晶体管:

8GB=8*1024 MB=8*1024*1024 KB=8*1024*1024*1024B=8*1024*1024*1024*8 bit

算下来大概有687亿个晶体管组成

0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
                               
0 1 0 0 0 0 0 1 1 1 1 0 1 0 0 0
                               
                               
                               
                               
                               

接下来我们说说对象:

客观世界是由各种对象组成的,任何事物都是对象,每一个对象都有自己的运动规律和内部状态,复杂的对象可由简单的各种对象以各种方式构成,对象的组合及相互作用就构成了系统,在计算机系统中一个对象可由三部分组成:对象名、属性和方法。

通常情况下计算机高级语言用类去表示对象,一个类的实例表示一个对象:

创建一个Person类

public class Person{


}

创建一个Person类实例即一个对象

Person person=new Person()

当运行程序执行以上这一段代码时 ,就产生了一个person对象,刚开始就提到内存是对象赖以生存的介质,对象从生成到消亡都是由CLR(Common Language Runtime)来管理的,CLR会计算出对象的所需要的内存大小,并且分配一定的内存区域给这个对象,这个对象何时消亡,CLR有自己的垃圾回收机制(GC)来处理,当这个对象消亡后,CLR就会收回它的内存

再看看第一张图第三排理解成一个2个字节大小(8个比特位)的对象在存活时内存中的样子:

0 1 0 0 0 0 0 1 1 1 1 0 1 0 0 0

在接下来的章节里会详细说说.Net 对象产生的详细过程,对象的内存大小是如何计算的,以及CLR是如何管理对象的内存的

你可能感兴趣的:(GC,.Net,垃圾回收机制,.net,microsoft)