首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

来看看.(关于内存的分配)

2012-03-28 
高手进来看看.(关于内存的分配)请问.一个class 和这个 class 的实例在内存中的表现是怎样的呢?就是堆栈中

高手进来看看.(关于内存的分配)
请问.

一个class

和这个 class 的实例

在内存中的表现是怎样的呢?就是堆栈中的表现

[解决办法]
class的实例分配在堆里,class本身在第一次使用时需要静态构造,应该放在类型池的地方
[解决办法]
举例说明:
Custom cus=new Custom();
首先声明一个Custom引用cus,在堆栈上给这个引用分配存储空间,但这仅是一个引用,而不是实际的Custom对象,cus引用占用4个字节的空间,包含了存储Custom对象的地址,然后分配堆上的内存,以存储Custom实例(一个真正的实例而不只是一个地址)然后把cus的值设置为分配给新Custom对象的内存地址。Custom实例没有放在堆栈中,而是放在内存的堆中。假定Custom对象占用32字节这32字节包含了Custom实例字段,和.net用于识别和管理其类实例的一些信息。为了在堆上找到一个存储新Custom对象的存储位置,.net运行库在堆中搜索,选取第一个未使用的,32字节的连续块,分配给cus实例。
[解决办法]


``class本身不占内存```

```只是这个class在实例化时会占用内存```

``它实例的对象没有直接放在堆区```

```而是通过在栈区分配一个32位随机的地址值```

``通过这个值来指向堆区中的内存空间```

``



[解决办法]
楼上,class本身不占内存,那么该类的方法地址表,反射信息放在哪
[解决办法]
class 的元数据信息在Heap中
Class 的实例数据分配在Heap中
Class的引用地址在Stack中
[解决办法]
GC的Generation数据是在堆中,元数据信息和实例数据都由GC管理所以在堆中
Class的引用地址在Stack中 也不完全对, 如果是全局变量在Heap中,如果是局部变量在Heap中
[解决办法]
修正:
GC的Generation数据是在堆中,元数据信息和实例数据都由GC管理所以在堆中
Class的引用地址在Stack中 也不完全对, 如果是全局变量在Heap中,如果是局部变量在Stack中
[解决办法]
GC的Generation数据是在堆中,元数据信息和实例数据都由GC管理所以在堆中
Class的引用地址在Stack中 也不完全对, 如果是全局变量在Heap中,如果是局部变量在Stack中
[解决办法]
CLASS是引用类型....楼主这些东西要看MSDN了解最基础的知识啊...谁那么有空给你打一大篇啊.

热点排行