- 内存分为两种数据结构:堆(Heap)和栈(Stack)。
- 栈相对较小,堆较大。
- 栈存储数据是先进后出。
- 栈一般用于存储少量关键信息。堆一般存储大量信息。
- 从数组看内存分配
- 计算机在执行语句是,永远从赋值符号(=)右边开始执行。
- 在堆中,开辟5个连续的内存空间,其中第一个空间有一个内存地址(比如1001)。
- 在栈中,存储数组名”Array”,并记下第一个空间的地址(1001)。
- 也就是说,栈中的Array只是个地址信息,指向堆中的1001。
- 计算机在执行语句是,永远从赋值符号(=)右边开始执行。
- 从类的实例化看内存分配
- “=”右边,只要有new关键字,就在堆中分配一块内存区域给Program类,并有个地址(1001)。
- 在栈中存储obj对象并指向内存地址1001,也就是Program。
- 类的内存分配机制
- 运行过程
- 分配内存空间。
- 建立类的对象名称(映射内存地址)。
- 运行构造函数。
- “=”左边在栈中,“=”右边在堆中。
- 实例化对象时,类的成员变量为“值类型”时,放在堆中(跟着对象),对象中的方法表也是单独在堆中存放,但方法表中的值类型存放在栈中。
- 类基本不占用内存,对象占用较多内存。
- 首先加载程序集然后加载程序集中所有的类最后找到程序集中的Main方法开始运行。
- 运行过程
02-02
1504
