繁体   English   中英

如何为C#类分配内存?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM