.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 次吗?或者它只会创建一个,然后自己处理?
在内存使用方面,这两种方案的工作方式相同。
你不必担心这一点,即使它很重要,让我们换一种方式,一个指向函数的指针价值大约 2 字节的内存,让我们只假设你的方法需要为每个对象分配这个内存。该应用程序现在占用 20Kb 的内存。如果这对您来说仍然很重要,只需考虑一下 C# 中的简单 hello world 控制台应用程序在附加了调试器的发布中运行时最多占用 4Mb 的内存。这比所有方法都将占用指向函数的指针的内存的情况多 200 倍。这只是为了给你一个关于内存分配背后的漏洞的图像,你必须担心或不担心。
您应该做的最好的事情(尤其是当您在托管环境中编写代码时)是考虑您的应用程序需要做什么以及它的设计。