技术开发 频道

浅析C#类内存分配时间及实例测试

浅析C#类内存分配时间及实例测试

  从图中我们可以看出,在调用构造函数之前,成员变量已经初始化了,a=1,说明他们已经有属于他们的内存了,不然a=1,s=1中的1往哪存,你不要告诉我说不需要内存。调用构造函数再对非静态成员变量进行初始化。在调用静态方法PrintStatic的过程中的确没有调用构造函数,大家都知道不需要调用构造函数。静态方法中只能调用静态的方法和属性,而属性的定义,以及在定义的时候给一个初值,都是在调用构造函数之前,一切都说明属性在调用构造函数之前已经分配内存了,所以请不要说:内存在调用构造函数的时候分配。

  一个类占用的内存是多少?我是这样认为的:

  一个类所占的内存等于=属性总内存+方法总内存+应用该类的指针所占的内存+同步索引块的大小。

  属性肯定是占内存的,至于方法,应该也占吧,不知道方法的内存首地址,怎么访问它。除了方法所在的内存,其他三个都是必须占内存的,类中可以没有方法吗,所以将基本类型赋给object类型(装箱),会多分配很多内存。

  而这些所需的内存编译器是非常清楚的,所以在调用构造函数之前调用完全可以分配内存。

0
相关文章