我有一个这样的课程,
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立方体数据。
答案 0 :(得分:0)
如果我有字典并将此类的实例添加到字典中,将使用多少内存?
这是当然定义的实现,但在.NET Framework& Core内部,Dictionary有一些与其元素数相关的线性开销 - 这将是棒球4 +(8 +存储TKey(或对它的引用)的大小+大小存储TValue(或对其的引用))。
请参阅:https://referencesource.microsoft.com/mscorlib/System/collections/generic/dictionary.cs.html
在您的情况下,TValue将是一种参考类型,因此请参阅How big is an object reference in .NET?
该类的实例是否仅仅代表了该类所需的数据?或数据加方法?
只是实例本身的数据。 (虽然再一次,我认为这是实现定义的。)
如果我向该类添加更多代码,内存使用量是否会增加此类的实例?
没有。见Where are methods stored in memory? ...(虽然我再次假设这是实现定义的。)