.NET C# 类内存分配

本文关键字:分配 内存 NET | 更新日期: 2023-09-27 17:56:05

我的问题非常简单。我需要创建一个类的 20.000 个 istance,我想了解在内存方面是否最好将方法放在实例化类中,或者调用类中只有一个方法更好,然后将我需要计算的单个类属性传递给它。

我的意思是,就内存而言,最好:

场景 a)

public class b
{
    public string name;
    public string result;
}
public class a
{    
    public string myMethod(string name)
    {
    //do complex things... long method...
    }
    //create 20.000 istances of class b
    //and when I need it... I take one of them and do something like...
    myclassB.result=myMethod(myclassB.name)    
}

或场景 b)

public class b
{
    private string name;     
    private string result; 
    private string myMethod()
    {
        //do complex things... long method...
        result="something";
    }
}
public class a
{
    //create 20.000 istances of class b
    //and when I need it... I take one of them and do something like...
    myclassB.myMethod();
}

我的意思是,当我使用其中的方法创建类的 20.000 个 istances 时,.net 会在内存中"复制"该方法 20.000 次吗?或者它只会创建一个,然后自己处理?

.NET C# 类内存分配

在内存使用方面,这两种方案的工作方式相同。

你不必担心这一点,即使它很重要,让我们换一种方式,一个指向函数的指针价值大约 2 字节的内存,让我们只假设你的方法需要为每个对象分配这个内存。该应用程序现在占用 20Kb 的内存。如果这对您来说仍然很重要,只需考虑一下 C# 中的简单 hello world 控制台应用程序在附加了调试器的发布中运行时最多占用 4Mb 的内存。这比所有方法都将占用指向函数的指针的内存的情况多 200 倍。这只是为了给你一个关于内存分配背后的漏洞的图像,你必须担心或不担心。

您应该做的最好的事情(尤其是当您在托管环境中编写代码时)是考虑您的应用程序需要做什么以及它的设计。