我是C#编程的新手.
有谁能告诉我关于C#的内存管理?
Class Student
{
int Id;
String Name;
Double Marks;
public string getStudentName()
{
return this.Name;
}
public double getPersantage()
{
return this.Marks * 100 / 500;
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道为这个类的例子分配了多少内存?
方法怎么样?在哪里分配?
如果有静态方法,他们的存储怎么样?
有人可以请我简单解释一下吗?
类本身的实例将在32位CLR上占用24个字节:
请注意,字符串本身的内存除此之外 - 例如,许多对象可以共享对同一字符串的引用.
方法不会导致相同类型的存储损失是字段.基本上它们与类型相关联而不是类型的实例,但是需要考虑IL版本和JIT编译的代码.但是,通常你可以根据我的经验忽略这一点.与数据相比,您必须拥有大量代码并且代码占用的内存很少.重要的是,您没有为每个实例获取每个方法的单独副本.
编辑:请注意,您碰巧选择了一个相对简单的案例.在情况下,您已经有了逻辑上更小尺寸(如字段short或byte字段)的CLR选择如何布置在内存中的对象,从而使得在需要内存对齐(是一个字的边界)值布局适当,但可能支持其他字段 - 所以4字节字段可能最终占用4个字节,或者如果CLR决定分别对齐每个字节,它们可能需要16个字节.我认为这是特定于实现的,但CLI规范可能会规定采取的确切方法.