[英]How is memory allocated for a C# class?
我有这样的课
public class Cube
{
private int[,] data;
public Cube()
{
data[,] = new int[3,3];
data[0,0] = 1;
data[1,0] = 2;
// etc
}
public void RotateFrontOfCube()
{
// code
}
public void RotateBackOfCube()
{
// code
}
如果我有一个字典并将此类的实例添加到字典中,将使用多少内存?
类的实例是否仅以某种方式表示该类所需的数据? 还是数据加上方法?
如果我向该类添加更多代码,相对于此类的实例,内存使用量是否会增加?
我正在构建此数据的树,以尝试分析rubiks多维数据集解决方案,但它占用大量内存。
顺便说一句,我上面的类已经简化,并且不代表完整的rubiks多维数据集数据。
如果我有一个字典并将此类的实例添加到字典中,将使用多少内存?
当然,这是实现定义的,尽管在.NET Framework和Core内部,Dictionary的开销相对于元素数量是线性的-大概是4 +(8 +存储TKey的大小(或对其的引用) )+存储TValue(或对其的引用)的大小。
请参阅: https : //referencesource.microsoft.com/mscorlib/System/collections/generic/dictionary.cs.html
在您的情况下,TValue将是引用类型,因此请参见.NET中的对象引用有多大?
类的实例是否仅以某种方式表示该类所需的数据? 还是数据加上方法?
只是实例本身的数据。 (尽管再一次,我认为这是实现定义的)。
如果我向该类添加更多代码,相对于此类的实例,内存使用量是否会增加?
否。请参见方法存储在内存中的什么位置? ...(尽管再一次,我认为这是实现定义的)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.